Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore , Condition

时间:2023-03-09 14:47:00
Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore  ,  Condition

http://www.importnew.com/21889.html

1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:

CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行;

而CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行;

另外,CountDownLatch是不能够重用的,而CyclicBarrier是可以重用的。

2)Semaphore信号量其实和锁有点类似,它一般用于控制对某组资源的访问权限。

http://www.cnblogs.com/skywang12345/p/3496716.html

Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。不同的是,Object中的wait(),notify(),notifyAll()方法是和"同步锁"(synchronized关键字)捆绑使用的;而Condition是需要与"互斥锁"/"共享锁"捆绑使用的。