java, presentation
Condition只出現(xiàn)在java1.5中,主要用來代替?zhèn)鹘y(tǒng)的對象的wait()和notify()實現(xiàn)線程間的協(xié)作。與對象的wait()和notify()相比,
使用條件的await()和signal()來實現(xiàn)線程間的協(xié)作會更加安全高效。
所以一般建議使用Condition,阻塞隊列實際上是用Condition來模擬線程間的協(xié)作。
Condition實際上是一個接口,基本方法是await()和signal()。
條件依賴于鎖接口,生成條件的基本代碼,即lock.newCondition()。
如果要調(diào)用條件的await()和signal()方法,必須用lock保護,也就是說必須在lock.lock()和lock.unlock之間使用。
描述:
1. The wait () in the condition corresponds to the wait () of the target;
2. The signal () in the condition corresponds to the notify () of the target;
3. All signals in the condition () correspond to the notifyAll () of the target.
需要注意的是,條件的執(zhí)行方式是,在線程消費者中調(diào)用await方法時,線程消費者會釋放鎖,自己休眠,等待被喚醒,線程生產(chǎn)者獲得鎖后,
它會開始運行,運行完畢后會調(diào)用條件的signalall方法喚醒線程消費者,線程消費者就可以恢復(fù)執(zhí)行了。
java,以上就是本文為您收集整理的java最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。