1. 程式人生 > >執行緒同步:Condition

執行緒同步:Condition

使用Synchronized關鍵字(synchronized方法或者synchronized程式碼塊)來保證執行緒間同步,則系統中存在同步監視器(顯式或者隱式),可以使用wait()、notify()、notifyAll()來協調執行緒通訊。

但是當我們直接使用Lock物件來保證同步的話,則系統中就不存在同步監視器一說。也就不能使用上述的幾個方法。

那怎麼辦呢?

當使用Lock物件保證同步的話,JAVA提供了一個Condition的類來協調執行緒通訊。這個Conditon物件必須要繫結到一個Lock物件上。

Lock lock = new Lock();
Condition cond = lock.newCondition();

類似於Synchronized關鍵字提供的那些方法,Condition類也提供了一些方法來協調執行緒間通訊。

await()

signal()

signalAll()

這三個方法的作用與之前的那三個方法類似。