線程 - wait、await 區別

wai()是Object類提供的,一般與synchronized聯合使用。調用wait之後會釋放鎖,導致線程等待。喚醒進程使用notify()或者notifyAll()。

await()Condition類是當中的,一般與Lock聯合使用。

舉例

synchronized(obj){
 obj.wait();//消費方沒東西了,等待
}

synchronize(obj){ 
    obj.notify();//有東西了,喚醒 消費進程
}

而Lock則是由Lock控制鎖,Condition來控制被阻塞線程

// 消費者
lock.lock();
condition.await();
lock.unlock();

//生產者
lock.lock(); 
condition.signal(); 
lock.unlock();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章