CountDownLatch、CyclicBarrier和Semaphore
分享学习好文http://www.cnblogs.com/dolphin0520/p/3920397.html
1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:
CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行;
而CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行;
另外,CountDownLatch是不能够重用的,而CyclicBarrier是可以重用的。
2)Semaphore其实和锁有点类似,它一般用于控制对某组资源的访问权限。
补充:对于CountDownLatch和CyclicBarrier,之间有一个比较重要的区别,就是CountDownLatch不会阻塞线程,而如果使用CyclicBarrier,当线程到达这个屏障的时候,会等待其他线程,这时候已经到达的线程就会处于阻塞的状态,通俗点说,就在屏障前干等着其他线程的到达。