目录
3.3 回调,使用new CyclicBarrier(parties, Runnable)构造函数
4. CyclicBarrier和CountDownLatch的区别
1. 概述
现实生活中我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子,旅游时要等全部人都到齐了才出发,比赛时要等运动员都上场后才开始。JUC提供的同步工具类CyclicBarrier可以模拟这类场景。
CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barries),它的作用是让一组线程到达一个屏障(也成为同步点)时阻塞,直到最后一个线程到达屏障时,这组线程才会放行,才会执行下面的逻辑。其源码是 ReentrantLock 和 Condition 的组合使用
利用CyclicBarrier类可以实现一组线程相互等待,当所有线程都到达某个屏障点后再进行后续的操作。下图演示了这一过程。