CyclicBarrier 和 CountDownLatch 在用法上的不同
CountDownLatch 适用于一组线程和另一个主线程之间的工作协作。一个主线程等待一组工作线程的任务完毕才继续它的执行是使用 CountDownLatch 的主要场景;CyclicBarrier 用于一组或几组线程,比如一组线程需要在一个时间点上达成一致,例如同时开始一个工作。另外,CyclicBarrier 的循环特性和构造函数所接受的 Runnable 参数也是 CountDownLatch 所不具备的。
CountDownLatch 是能使一组线程等另一组线程都跑完了再继续跑;CyclicBarrier 能够使一组线程在一个时间点上达到同步,可以是一起开始执行全部任务或者一部分任务。同时,它是可以循环使用的;Semaphore 是只允许一定数量的线程同时执行一段任务。
Phaser是一个灵活的线程同步工具,他包含了CyclicBarrier和CountDownLatch的相关功能
Java之CountDownLatch使用
CountDownLatch浅析--同步计数器,接受命令执行命令的同步
Java之CyclicBarrier使用
CyclicBarrier介绍--统计全国的业务数据--多次集合
Java线程之CyclicBarrier---
Java线程之Phaser
java的Phaser,多线程分阶段执行
最后,这篇文章写得非常好,看后收获非常大。http://whitesock.iteye.com/blog/1135457
Lock,ReadWriteLock
http://blog.csdn.net/huang_xw/article/details/7090177