小编典典

Java 并发:倒计时锁存器与循环障碍

all

我正在阅读java.util.concurrent
API
,发现

  • CountDownLatch: 一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。
  • CyclicBarrier: 一种同步辅助工具,它允许一组线程相互等待以达到共同的障碍点。

对我来说,两者似乎是平等的,但我相信还有更多。

例如,在CoundownLatch, the countdown value could not be reset, that can happen in the case of CyclicBarrier.

两者之间还有其他区别吗?有人想
在哪里重置倒计时的值?use cases


阅读 57

收藏
2022-08-24

共1个答案

小编典典

一个主要区别是CyclicBarrier接受一个(可选的)可运行任务,一旦满足通用屏障条件,该任务就会运行。

它还允许您获取在屏障处等待的客户端数量以及触发屏障所需的数量。一旦触发,屏障就会重置并且可以再次使用。

对于简单的用例 - 服务启动等...... CountdownLatch 很好。CyclicBarrier
对于更复杂的协调任务很有用。这种事情的一个例子是并行计算——计算中涉及多个子任务——有点像MapReduce

2022-08-24