CyclicBarrier基于条件队列和独占锁来实现,而CountDownLatch采用AQS的共享锁
在CyclicBarrier中线程调用await方法不仅会将自己阻塞还会将计数器减1,而在CountDownLatch中线程调用await方法只是将自己阻塞而不会减少计数器的值
CountDownLatch只能拦截一轮,而CyclicBarrier可以实现循环拦截
CyclicBarrier所有相互等待的线程,要么一起通过barrier,要么一个都不要通过,如果有一个线程因为中断、失败或者超时而过早的离开了barrier,则该barrier会被broken掉,所有等待在该barrier上的线程都会抛出BrokenBarrierException(或者InterrupedException)