私はCyclicBarrierについて傾いていて、私はこのデモを書いています。私はを期待通りにCyclicBarrierは最後に待っていますか?
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import static java.util.concurrent.ThreadLocalRandom.current;
public class CyclicBarrierDemo {
public static void main(final String[] args) {
final int threads = 100;
final CyclicBarrier barrier
= new CyclicBarrier(threads,() -> System.out.println("tripped"));
final int rounds = 5;
for (int i = 0; i < threads; i++) {
new Thread(() -> {
for (int j = 0; j < rounds; j++) {
try {
Thread.sleep(current().nextLong(1000L));
barrier.await();
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace(System.err);
return;
}
}
}).start();
}
}
}
プログラムは5 tripped
を印刷し、終了し、。
tripped
tripped
tripped
tripped
tripped
私の質問は、最後のawait()
が到着したときCyclicBarrier
インスタンスは自身をリセットすることですか?出力が期待されるように?私はそれについて何の言葉も見つけられませんでした。
ありがとうございました。公式のapidocはそれを言及すべきである! –
素敵な説明 – rvit34