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

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

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

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

問題描述

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

這里有3個(gè)對(duì)象,一個(gè)i哦是lock,一個(gè)是isEmpty,一個(gè)是isFull上鎖的對(duì)象是lock,而不是isEmpty或者isFull那isFull或者isEmpty釋放的鎖確實(shí)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:

謝邀,答案:

會(huì);是;

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

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 午夜爽爽爽男女免费观看hd | 一个人看的www日本视频 | 国内精品久久久久久久久蜜桃 | 国内外成人免费在线视频 | 亚洲黄色三级网站 | 久久国产99 | 欧美性色黄大片www 欧美性色黄大片一级毛片视频 | 91久久99久91天天拍拍 | 99在线精品视频在线观看 | 日韩在线亚洲 | 欧美一级视频免费观看 | 亚洲男人在线天堂 | 国产免费久久精品久久久 | 伊人2233 | 在线精品一区二区三区 | 波多野结衣在线免费观看视频 | 欧美一级看片免费观看视频在线 | 久久黄色视屏 | 在线视频精品视频 | 一级成人毛片免费观看欧美 | 精品一久久香蕉国产二月 | 久久免费精品视频在线观看 | 久久国产成人 | 久久精品国产精品亚洲精品 | 久草网视频在线观看 | 国产精品日本不卡一区二区 | 精品视频一区二区三区四区 | 国产欧美日韩成人 | 日韩亚洲一区中文字幕 | 国产真实乱系列2孕妇 | 91免费永久国产在线观看 | 成人福利在线 | 国美女福利视频午夜精品 | 日韩欧美成末人一区二区三区 | 成人欧美午夜视频毛片 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片唾 | 极品美女写真菠萝蜜视频 | 九九精品在线观看 | 国产精品爱久久久久久久9999 | 欧美一级看片a免费观看 | 高清欧美日本视频免费观看 |