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,当线程到达这个屏障的时候,会等待其他线程,这时候已经到达的线程就会处于阻塞的状态,通俗点说,就在屏障前干等着其他线程的到达。

posted @ 2017-06-20 19:53  邱进宝  阅读(102)  评论(0编辑  收藏  举报