CyclicBarrier介绍:
位于java.util.concurrent并发包下,是一个工具类。CyclicBarrier是循环栅栏的意思,它能阻塞一组线程直到某个事件发生。等到释放这些线程之后,CyclicBarrier还可以重复用,所以是循环栅栏
比如我们一起包了车去游玩,有些人早早到了有些人准时到,有些人迟到。但是无论怎样都要等所有人都齐了,车才能开,这个车就是CyclicBarrier。而参与的这些人就是线程
应用场景:多线程分组计算
提供的方法:
构造方法:
paties:参与线程数
brrierAction:即最后一个到达线程要做什么操作
await方法:
public int await() throws InterruptedException, BrokenBarrierException
public int await(long timeout, TimeUnit unit) throws InterruptedException, BrokenBarrierException, TimeoutException
await()被调用的时候说明线程已经达到了栅栏。
CyclicBarrier和CountDownLatch区别;
CyclicBarrier是可以重复利用的, CountDownLatch是一次性的。