(1)CountDownLatch 简单的说就是一个线程等待,直到他所等待的其他线程都执行完成并且调用countDown()方法发出通知后,当前线程才可以继续执行。
(2)cyclicBarrier 是所有线程都进行等待,直到所有线程都准备好进入await()方法之后,所有线程同时开始执行!
(3)CountDownLatch 的计数器只能使用一次。而CyclicBarrier 的计数器可以使用reset()方法重置。所以CyclicBarrier 能处理更为复杂的业务场景,比如如果计算发生错误,可以重置计数器,并让线程们重新执行一次。
( 4 ) CyclicBarrier 还提供其他有用的方法, 比如getNumberWaiting 方法可以获得CyclicBarrier 阻塞的线程数量。isBroken 方法用来知道阻塞的线程是否被中断。如果被中断返回true,否则返回false。