網站首頁 學習教育 IT科技 金融知識 旅遊規劃 生活小知識 家鄉美食 養生小知識 健身運動 美容百科 遊戲知識 綜合知識
當前位置:趣知科普吧 > IT科技 > 

javacondition原理

欄目: IT科技 / 發佈於: / 人氣:1.49W

condition 介紹

Condition是在java1.5中才出現的,它主要是用來替代傳統的Object的wait()、notify()實現線程間的協作,相比較使用Object的wait()、notify(),使用Condition的await()、signal()這種方式實現線程間協作會更加安全與高效。

因此一般情況下是比較推薦使用Condition的,並且阻塞隊列實際上也就是使用了Condition來模擬線程間的協作。

Condition其實就是個接口,基本的方法就是await()與signal()方法;

Condition比較依賴於Lock接口,生成一個Condition的基本代碼,即lock.newCondition()。

若是想要調用Condition的await()和signal()方法,都必須要在lock保護之內,也就是說必須要在lock.lock()和lock.unlock之間才能夠使用的。

javacondition原理

說明:

1、condition中的await()對應Object的wait();

2、Condition中的signal()對應Object的notify();

3、Condition中的signalAll()對應Object的notifyAll()。

需要注意的是,Condition的執行方式,是當在線程Consumer中調用await方法後,線程Consumer將會釋放鎖,並且將自己沉睡,等待被喚醒,線程Producer獲取到鎖之後,就會開始執行,完畢後,會調用Condition的signalall方法,喚醒線程Consumer,線程Consumer即可恢復執行。

Tags:javacondition