[Java并发]使用CountDownLatch和CyclicBarrier等待多线程完成
2017-09-13 17:48
916 查看
CountDownLatch
一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法
public CountDownLatch(int count);
public void countDown();
public void await() throws InterruptedException
CyclicBarrier
CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。CyclicBarrier还提供一个更高级的构造函数CyclicBarrier(int parties, Runnable barrierAction),用于在线程到达屏障时,优先执行barrierAction,方便处理更复杂的业务场景。
区别
CyclicBarrier和CountDownLatch的区别CountDownLatch的计数器只能使用一次。而CyclicBarrier的计数器可以使用reset() 方法重置。所以CyclicBarrier能处理更为复杂的业务场景,比如如果计算发生错误,可以重置计数器,并让线程们重新执行一次。
相关文章推荐
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier)
- 使用Java辅助类(CountDownLatch、CyclicBarrier、Semaphore)并发编程
- Java并发编程之2——同步工具类的使用(CountDownLatch,CyclicBarrier,BlockungQueue,Semaphore)
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier) .
- 使用java并发工具栅栏(CyclicBarrier)实现多线程等待,同一时刻执行共同任务
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier)
- Java多线程等待所有线程结束(CountDownLatch/CyclicBarrier)
- Java中的并发工具CountDownLatch、CyclicBarrier、Semapphore使用详解
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier) .
- Java:多线程等待所有线程结束(CountDownLatch/CyclicBarrier) .
- 多线程并发常用类:condition,semaphore,CyclicBarrier,countdownlatch,exchanger使用整理
- 【Java多线程】CountDownLatch、CyclicBarrier和Semaphore使用
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- 《Java 7 并发编程指南》学习概要 (3)Semaphore, CountDownLatch, CyclicBarrier , Phaser, Exchanger
- Java并发之CountDownLatch、CyclicBarrier和Semaphore
- Java_并发线程_Semaphore、CountDownLatch、CyclicBarrier、Exchanger
- Java_并发线程_Semaphore、CountDownLatch、CyclicBarrier、Exchanger
- java并发之CountDownLatch、Semaphore和CyclicBarrier
- Java线程知识__其他几种线程同步的工具类的使用(CyclicBarrier,CountDownLatch,Exchanger)
- Java基础:多线程之CountDownLatch、CyclicBarrier、Exchanger