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

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

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
相關文章:
主站蜘蛛池模板: 色综合天天综合网看在线影院 | 国产成人精品男人的天堂538 | 国产三级国产精品国产普男人 | 黄频免费影院 | 精品在线视频一区 | 欧美一级高清片免费一级 | 玖玖国产在线 | 国产精品免费久久 | 大陆孕妇孕交视频自拍 | 欧美一区高清 | 兔子先生节目在线观看免费 | 92看片淫黄大片一级 | 午夜性爽爽爽 | 国产制服 国产制服一区二区 | 国产色视频一区二区三区 | 国内自拍一区 | 国产亚洲欧美视频 | 日本道综合一本久久久88 | 国产一区三区二区中文在线 | 久久久久琪琪去精品色村长 | 91精品国产免费久久 | 国产国产成人人免费影院 | 亚洲欧美日韩天堂 | 日本不卡免费高清一级视频 | 久久这里一区二区精品 | 成人亲子乱子伦视频 | 成人性版蝴蝶影院污 | 男女上下爽无遮挡午夜免费视频 | 久草资源免费 | 日本黄网站高清色大全 | 久久久久国产一级毛片高清片 | 亚洲一区www | 99久久精品国产一区二区 | 成人免费久久精品国产片久久影院 | 成人首页 | 日本黄页网站在线观看 | 午夜一级做a爰片久久毛片 午夜伊人网 | 国产精品久久国产精品99盘 | 成人a免费视频播放 | 欧美成人午夜片一一在线观看 | a国产成人免费视频 |