对我来说,CountDownLatch和CyclicBarrier之间的区别只是CyclicBarrier提供了比CountDownLatch更多的功能,比如当所有线程都会到达一个障碍点时,你可以执行某个任务。你可以在循环屏障中找到等待线程数和到达线程数。所以这意味着我们可以在所有使用CountDownLatch的地方使用CyclicBarrier。如果我错了,请纠正我。所以为什么CountDownLatch是用java给出的。如果我们可以使用CyclicBarrier执行这些功能,为什么它不会被弃用。
发布于 2018-03-05 22:27:45
CyclicBarier等待一定数量的线程,而CountDownLatch等待一定数量的事件(一个线程可以多次调用CountDownLatch.countDown() )。CountDownLatch一旦打开就不能再使用。此外,调用CountDownLatch.countDown()的线程只发出信号表示它完成了一些任务。它不会阻塞(在CyclicBarrier.await()中是阻塞方法),并且可以继续做一些其他事情。
来自javadoc
初始化为N的CountDownLatch可用于使一个线程等待,直到N个线程完成某个操作,或某个操作已完成N次。
https://stackoverflow.com/questions/49112505
复制相似问题