CountDownLatch和CyclicBarrier辨析
- CountDownLatch调用countdown后自身不会阻塞
- CyclicBarrier调用await后自身会阻塞(**在同步点等待**)
- CountDownLatch的计数器只能使用一次,而v的计数器可以反复使用。
- CountDownLatch.await一般阻塞工作线程,所有的进行预备工作的线程执行countDown,而CyclicBarrier通过工作线程调用await从而自行阻塞,直到所有工作线程达到指定屏障,再大家一起往下走。
- 在控制多个线程同时运行上,CountDownLatch可以不限线程数量,而CyclicBarrier是固定线程数。
- CyclicBarrier没有主线程和子线程之分。
- 同时,CyclicBarrier还可以提供一个barrierAction,合并多线程计算结果。
