CountDownLatch的用例,其中不能使用CyclicBarrier

时间:2018-03-05 14:18:58

标签: java concurrency countdownlatch cyclicbarrier

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

1 个答案:

答案 0 :(得分:0)

CyclicBarier等待一定数量的线程,而CountDownLatch等待一定数量的事件(一个线程可以多次调用CountDownLatch.countDown())。一旦打开,CountDownLatch就无法重复使用。调用CountDownLatch.countDown()的线程也只表示它完成了一些东西。它没有阻止(并且在CyclicBarrier.await()中是阻塞方法)并且可以继续做其他一些事情。

来自javadoc

  

CountDownLatch初始化为N.   可以用来让一个线程等到N个线程都有   完成了某些操作,或某些操作已完成N次