国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

java - 條件變量的await()釋放鎖嗎?

瀏覽:86日期:2024-02-05 11:45:20

問題描述

譬如下面的兩個條件變量 isEmpty和isFull當(dāng)調(diào)用他們的await()時,lock.lock()上的鎖會被釋放嗎?

這里有3個對象,一個i哦是lock,一個是isEmpty,一個是isFull上鎖的對象是lock,而不是isEmpty或者isFull那isFull或者isEmpty釋放的鎖確實lock上的?

private volatile boolean usedData = true;//mutex for dataprivate final Lock lock = new ReentrantLock();private final Condition isEmpty = lock.newCondition();private final Condition isFull = lock.newCondition();public void setData(int data) throws InterruptedException { lock.lock(); try {while(!usedData) {//wait for data to be used isEmpty.await();}this.data = data;isFull.signal();//broadcast that the data is now full.usedData = false;//tell others I created new data. }finally {lock.unlock();//interrupt or not, release lock } }

問題解答

回答1:

await的doc有這么一句啊The lock associated with this Condition is atomically released

回答2:

謝邀,答案:

會;是;

await()的作用是能夠讓其他線程訪問競爭資源,所以掛起狀態(tài)就是要釋放競爭資源的鎖。 在javaSE5的java.util.concurrent類庫中,使用互斥并允許任務(wù)掛起的基本類就是Condition,你可以通過await()來掛起一個任務(wù),當(dāng)外部條件改變時,意味著某個任務(wù)可以繼續(xù)執(zhí)行,你可以通過signal()來通知這個任務(wù)。

每個lock()的調(diào)用必須緊跟一個try-finally子句,用來保證在所有情況下都可以釋放鎖。任務(wù)在可以調(diào)用await(),signal(),signalAll()之前,必須擁有這個鎖。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 日本在线视频播放 | 久久久久女人精品毛片 | 国产三级视频网站 | 国产精品国产亚洲精品看不卡 | 久久免费视频在线观看 | 亚洲国产天堂久久九九九 | 午夜精品在线 | 亚洲va中文字幕欧美不卡 | 欧美国产精品亚洲精品第一区 | 99视频精品免视3 | 免费特黄一级欧美大片在线看 | 欧美成人免费全部色播 | a毛片全部播放免费视频完整18 | 亚洲区一 | 国产91精品在线 | 欧美视频一区在线观看 | 欧美久| 国产一级内谢a级高清毛片 国产一级片毛片 | 韩国一级永久免费观看网址 | 一级毛片美国一级j毛片不卡 | 欧美成人精品高清在线播放 | 蕾丝视频永久在线入口香蕉 | 羞羞一区二区三区四区片 | 在线国产视频 | 亚洲成a人片在线观看 欧美 | 欧美一区二区三区视视频 | 久久免费视屏 | 国产精品久久久久毛片真精品 | 国产专区第一页 | 国产成人免费片在线观看 | 4455永久在线毛片观看 | 色婷婷色综合激情国产日韩 | 亚在线| 国产精品久久久影院 | 日产一区两区三区 | 亚欧成人中文字幕一区 | 理论在线看 | 日本一区二区三区在线 视频观看免费 | 国产做国产爱免费视频 | 成人影院在线免费观看 | 成年女人毛片免费播放视频m |