CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下~

它们的行为有一定相似度,区别主要在于

  • CountDownLatch 是不可以重置的,所以无法重用,CyclicBarrier 没 有这种限制,可以重用。
  • CountDownLatch 的 基 本 操 作 组 合 是 countDown/await, 调 用 await 的线程阻塞等待 countDown 足够的次数,不管你是在一个线
    程还是多个线程里 countDown,只要次数足够即可。 CyclicBarrier 的基本操作组合就是 await,当所有的伙伴都调用了 await,才会继续 进行任务,并自动进行重置。
  • CountDownLatch 目的是让一个线程等待其他 N 个线程达到某个条 件后,自己再去做某个事(通过 CyclicBarrier 的第二个构造方法 public CyclicBarrier(int parties, Runnable barrierAction),在新线 程里做事可以达到同样的效果)。而 CyclicBarrier 的目的是让 N 多 线程互相等待直到所有的都达到某个状态,然后这 N 个线程再继续执 行各自后续(通过 CountDownLatch 在某些场合也能完成类似的效
    果)。

回复

我来回复
  • 暂无回复内容

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部