CountDownLatch and CyclicBarrier

CountDownLatch and CyclicBarrier

CountDownLatch: A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.

CyclicBarrier : A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point.

CountDownLatch和CyclicBarrier本质是一样的,都是在每个Thread 设置 CountDownLatch或CyclicBarrier 的屏障点point, 每个Thread 计入的Condition 中队列, 执行到屏障点point时候,回调 CountDownLatch或CyclicBarrier 的await方法,在Condition 中队列遍历是否所有的Thread 都已经执行到屏障点point。但是并没有释放Thread ,Thread 一致是运行状态(可以理解成时等待其他Thread全部完成屏障点point)。

区别是:
每个Thread 到达 CountDownLatch的屏障点point 可以调用 countDown()计数-1,到全部为计数0的时候,全部其他Thread通过,继续执行或结束。

所有到达 CyclicBarrier 的屏障点point 时候,该屏障点point 结束,继续执行。如果不能全部到达(中断、失败或者超时等原因),设置 BrokenBarrierException引起所有调用await方法的“Thread”全部报错,全部要么全不 (all-or-none) 的破坏模式。

reset也是抛出BrokenBarrierException。

简而言之,CyclicBarrier 实现一致性,CountDownLatch简单计数。

CyclicBarrier 循环特性
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值