ベータ版移行版。作業部屋IDの綴り修正
リビジョン | 0618cdd02df08006275813246dccc52ccca4eafe (tree) |
---|---|
日時 | 2015-07-30 11:56:49 |
作者 | MirrgieRiana Kurilab |
コミッター | MirrgieRiana Kurilab |
OutputFluorine: 特定の条件下でのデッドロックの解消
@@ -3,7 +3,6 @@ | ||
3 | 3 | import java.io.OutputStream; |
4 | 4 | import java.io.PrintStream; |
5 | 5 | import java.io.UnsupportedEncodingException; |
6 | -import java.util.Iterator; | |
7 | 6 | import java.util.LinkedList; |
8 | 7 | |
9 | 8 | import mirrg.serial.fluorine.encode.EncoderAcsOperator; |
@@ -47,13 +46,21 @@ | ||
47 | 46 | try { |
48 | 47 | while (true) { |
49 | 48 | |
50 | - synchronized (sendingAcsElements) { | |
51 | - Iterator<IAcsElement> iterator = sendingAcsElements.iterator(); | |
52 | - while (iterator.hasNext()) { | |
53 | - IAcsElement acsElement = iterator.next(); | |
49 | + while (true) { | |
50 | + | |
51 | + IAcsElement acsElement = null; | |
52 | + synchronized (sendingAcsElements) { | |
53 | + if (!sendingAcsElements.isEmpty()) { | |
54 | + acsElement = sendingAcsElements.removeFirst(); | |
55 | + } | |
56 | + } | |
57 | + | |
58 | + if (acsElement != null) { | |
54 | 59 | sendImpl(acsElement.get(), listener); |
55 | - iterator.remove(); | |
60 | + } else { | |
61 | + break; | |
56 | 62 | } |
63 | + | |
57 | 64 | } |
58 | 65 | |
59 | 66 | Thread.sleep(5); |