线程工具类之CountDownLatch、CyclicBarrier

CountDownLatch、CyclicBarrier是JAVA提供的多线程工具类,用于协调线程之间协作的。里面都维护了一个计数器;

CountDownLatch latch = new CountDownLatch(4);
//计数器-1
latch.countDown();
//等待计时器为0,为0时启动
latch.await();
CyclicBarrier barrier = new CyclicBarrier(4);
//计数器-1
barrier.await();

他们相同之处是 都是通过计树器-1,协调多个线程,直到条件满足之后去做别的事情;
不同之处是
1:CountDownLatch只能做一次,而CyclicBarrier可以循环的协调;
2:CountDownLatch维护的计时器与线程数无关,而CyclicBarrier有关
3:CyclicBarrier有个构造方法可以传递一个线程,就是在计时器为0时,先执行该线程的的方法,而CountDownLatch不行
4:CountDownLatch不能控制线程的具体走向,只能等待;而CyclicBarrier等待内部线程一起完成。

你可能感兴趣的:(线程工具类之CountDownLatch、CyclicBarrier)