对我来说,CountDownLatch 和 CyclicBarrier 之间的区别仅在于 CyclicBarrier 提供了比 CountDownLatch 更多的功能,例如当所有线程都到达障碍点时,您可以执行某个任务。您可以在循环屏障中找到没有等待线程和没有到达线程。所以这意味着我们可以在所有使用 CountDownLatch 的地方使用 CyclicBarrier。如果我错了,请纠正我。那么为什么在java中给出CountDownLatch。如果我们可以使用 CyclicBarrier 执行这些功能,为什么它不会被弃用。
问问题
330 次
1 回答
0
CyclicBarier
等待一定数量的线程,同时CountDownLatch
等待一定数量的事件(一个线程可以调用CountDownLatch.countDown()
多次)。CountDownLatch
一经打开不可重复使用。此外,调用的线程CountDownLatch.countDown()
仅表示它完成了一些事情。它不会阻塞(并且在CyclicBarrier.await()
阻塞方法中)并且可以继续做一些其他的事情。
来自 javadoc
初始化为 N 的 CountDownLatch 可用于使一个线程等待,直到 N 个线程完成某个动作,或者某个动作已完成 N 次。
于 2018-03-05T14:27:44.557 回答