CountDownLatch与CyclicBarrier区别,举例
1、CountDownLatch 等待一个或多个线程执行完,再执行。
栗子:飞机起飞前各个检查完,起飞。
初始化:
CountDownLatch countD = new CountDownLatch(3);
起飞进程wait(),阻塞;
每个检查完,countD.countDown();
当countD直到为0,起飞。
2、CyclicBarrier 等待过个线程准备好后,统一执行。
栗子:所有飞机到位后,统一起飞。
CyclicBarrier barrier = new CyclicBarrier(3);
for(int i = 0; i < 3; i++){
plan.prepare();
barrer.await();
}