CyclicBarrier类似一个加法计算器。可以自增等待所有线程执行完成。
public class CyclicBarrierTest {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(5,()->{
System.out.println(5+"条线程都已执行。");
});
for (int i = 1; i <= 5 ; i++) {
new Thread(()->{
System.out.println("线程"+Thread.currentThread().getName()+"执行完成");
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
},String.valueOf(i)).start();
}
}
}
cyclicBarrier.await();语句类似于countDownLatch.countDown()。cyclicBarrier在等待中加1,当加到设定的值时,执行预定的任务。上面是打印"5条线程都已执行。"。