记录--多线程

1. CountDownLatch 和 CyclicBarrier 的区别

await() 方法的调用主体不一样,countDownLatch 通常是调用线程调用的,而 cyclicBarrier 是在任务线程调用的,导致了 cyclicBarrier 通常是阻塞等待其他线程,即等到 count 为 0 时阻塞,等于 0 时唤醒所有线程;而 countDownLatch 阻塞调用线程,任务线程正常执行,等到 count 为 0 ,唤醒调用线程继续执行;countdownLatch  适用于所有线程通过某一点 后通知方法 ,而 cyclicBarrier 适合让所有线程在同一点同时执行;countDownLatch 利用继承 AQS 的共享锁来进程线程的通知,利用 cas 来进行;而 cyclicBarrier 则利用 ReentrantLock 的 Condition 来阻塞和通知线程

原文地址:https://www.cnblogs.com/zhuozhang/p/14930759.html