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