CyclicBarrier ,和countDownLatch相反,CyclicBarrier要做加法,加到制定值,释放唤醒等待的线程;
public static void main(String[] args) throws BrokenBarrierException, InterruptedException {
CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{
System.out.println("召唤");
});
for (int i = 1; i<=7;i++){
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("收集第" +Thread.currentThread().getName() + "颗" );
try {
cyclicBarrier.await();
//等待被唤醒,唤醒后的操作
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
},String.valueOf(i)).start();
}
}
比如收集到七颗龙珠,才能召唤神龙,必须得等七颗全部收集齐;
做加法, 加到7,召唤神龙
本文深入探讨了CyclicBarrier的使用场景与实现原理,通过生动的龙珠召唤实例,展示了如何利用CyclicBarrier同步多个线程,直到达到指定数量后统一唤醒,非常适合于需要同步多个任务完成后再进行下一步操作的场景。

6566

被折叠的 条评论
为什么被折叠?



