色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

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

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

問題描述

譬如下面的兩個條件變量 isEmpty和isFull當調用他們的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()的作用是能夠讓其他線程訪問競爭資源,所以掛起狀態就是要釋放競爭資源的鎖。 在javaSE5的java.util.concurrent類庫中,使用互斥并允許任務掛起的基本類就是Condition,你可以通過await()來掛起一個任務,當外部條件改變時,意味著某個任務可以繼續執行,你可以通過signal()來通知這個任務。

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

標簽: java
相關文章:
主站蜘蛛池模板: 欧美精品亚洲精品日韩专区 | 成人国产三级精品 | 国产欧美va欧美va香蕉在线 | 国产一级毛片大陆 | 妖精www成人动漫在线观看 | 精品一区二区三区免费观看 | 欧美国产在线观看 | 欧美综合亚洲 | 欧美日韩高清性色生活片 | 日本黄色大片在线播放视频免费观看 | 色综合天天综合网看在线影院 | 一个人看的日本www的免费视频 | 午夜一级毛片免费视频 | 免费一区二区 | 手机毛片在线观看 | 日本欧美亚洲 | 成年男女免费视频网站播放 | 国产欧美精品一区二区三区 | 成人免费真人毛片视频 | 日韩在线免费 | 亚洲国产精品视频 | 久久免费毛片 | 免费观看一级特黄欧美大片 | se就是色94欧美setu | 深夜福利视频大全在线观看 | 欧美一级视频高清片 | 成年人免费软件 | 国产成人经典三级在线观看 | 一区二区不卡久久精品 | 曰韩三级 | 免费亚洲网站 | 女人把腿劈开让男人桶的网站 | 中文字幕中文字幕中中文 | 国产午夜精品久久久久小说 | 黄色三级网站 | 三级网站免费看 | 久久久免费的精品 | 青青热久久国产久精品秒播 | 99久久精品免费观看区一 | 国产真实乱子伦精品视手机观看 | 激情欧美日韩一区二区 |