...">
瀏覽量:135次
java condition是怎樣的呢?下面就讓我們一起來了解一下吧:
condition 介紹
Condition是在java1.5中才出現(xiàn)的,它主要是用來替代傳統(tǒng)的Object的wait()、notify()實現(xiàn)線程間的協(xié)作,相比較使用Object的wait()、notify(),使用Condition的await()、signal()這種方式實現(xiàn)線程間協(xié)作會更加安全與高效。
因此一般情況下是比較推薦使用Condition的,并且阻塞隊列實際上也就是使用了Condition來模擬線程間的協(xié)作。
Condition其實就是個接口,基本的方法就是await()與signal()方法;
Condition比較依賴于Lock接口,生成一個Condition的基本代碼,即lock.newCondition()。
若是想要調(diào)用Condition的await()和signal()方法,都必須要在lock保護(hù)之內(nèi),也就是說必須要在lock.lock()和lock.unlock之間才能夠使用的。
說明:
1、condition中的await()對應(yīng)Object的wait();
2、Condition中的signal()對應(yīng)Object的notify();
3、Condition中的signalAll()對應(yīng)Object的notifyAll()。
需要注意的是,Condition的執(zhí)行方式,是當(dāng)在線程Consumer中調(diào)用await方法后,線程Consumer將會釋放鎖,并且將自己沉睡,等待被喚醒,線程Producer獲取到鎖之后,就會開始運(yùn)行,完畢后,會調(diào)用Condition的signalall方法,喚醒線程Consumer,線程Consumer即可恢復(fù)執(zhí)行。
[聲明]本網(wǎng)轉(zhuǎn)載網(wǎng)絡(luò)媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點,本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內(nèi)容侵犯了您的版權(quán),請您的相關(guān)內(nèi)容發(fā)至此郵箱【779898168@qq.com】,我們在確認(rèn)后,會立即刪除,保證您的版權(quán)。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776