亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

瀏覽:102日期: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
相關文章:
主站蜘蛛池模板: 久久精品是免费100 久久精品首页 | 日本一区二区三区四区无限 | 成人毛片100部免费看 | 九九九色视频在线观看免费 | 免费网站你懂的 | 亚洲1区2区3区4区 | 麻豆免费视频 | 日本成日本片人免费 | 国内在线播放 | 在线观看黄色片 | 国产91精品在线播放 | 性大片免费观看yy | 日本中文字幕乱码aa高清电影 | 亚洲一区二区三区视频 | 欧美成年黄网站色高清视频 | 成年人在线观看视频网站 | 国产精品自拍在线观看 | 久久青青草原综合伊人 | 免费看黄视频 | 成人精品一区二区激情 | 在线免费看黄的网站 | 青青久操视频 | 大学生久久香蕉国产线观看 | 欧美成人免费全部色播 | 1024手机在线观看视频 | 一级毛片直接看 | 国产一级性片 | 成人免费体验区福利云点播 | 日韩特级毛片免费观看视频 | 老妇毛片久久久久久久久 | 精品专区 | 亚洲国内精品 | 黄色福利在线观看 | 军营呻吟娇喘np | 欧美在线视 | 在线观看视频国产 | 亚洲最大的黄色网址 | 亚洲欧美精品中字久久99 | 成人精品一区二区久久久 | 免费视频网站一级人爱视频 | 国产亚洲精品美女久久久久 |