0

对我来说,CountDownLatch 和 CyclicBarrier 之间的区别仅在于 CyclicBarrier 提供了比 CountDownLatch 更多的功能,例如当所有线程都到达障碍点时,您可以执行某个任务。您可以在循环屏障中找到没有等待线程和没有到达线程。所以这意味着我们可以在所有使用 CountDownLatch 的地方使用 CyclicBarrier。如果我错了,请纠正我。那么为什么在java中给出CountDownLatch。如果我们可以使用 CyclicBarrier 执行这些功能,为什么它不会被弃用。

4

1 回答 1

0

CyclicBarier等待一定数量的线程,同时CountDownLatch等待一定数量的事件(一个线程可以调用CountDownLatch.countDown()多次)。CountDownLatch一经打开不可重复使用。此外,调用的线程CountDownLatch.countDown()仅表示它完成了一些事情。它不会阻塞(并且在CyclicBarrier.await()阻塞方法中)并且可以继续做一些其他的事情。

来自 javadoc

初始化为 N 的 CountDownLatch 可用于使一个线程等待,直到 N 个线程完成某个动作,或者某个动作已完成 N 次

于 2018-03-05T14:27:44.557 回答