CountDownLatch VS CyclicBarrier

11月 30, 2016 |

CountDownLatch和CyclicBarrier都是线程同步辅助工具。
CountDownLatch的经典用法为两种
场景1:
将count初始化为1,当一个线程调用countDown()后其他等待的线程继续执行
场景2:
将count初始化为n,协调线程(coordinate thread)等待其他工作线程(work thread)都执行结束后再执行某些动作。过程为协调线程调用await()等待count变为0,其他的线程调用countDown()表示其执行完毕。
CyclicBarrier原理:
不是等待别的线程调用countDown()来减少count,当count变为0时阻塞在await()的线程继续执行。而是当await()的线程数等于初始化值N时执行CyclicBarrier初始化时提供的回调函数,然后所有这些在await()调用处阻塞的线程继续执行

Posted in: java基础

Comments are closed.