課程
/后端開發(fā)
/Java
/深入淺出Java多線程
在wait set中不滿足條件的線程,被喚醒后是不是還是不滿足條件?然后次線程又進(jìn)入了wait set,還是說或重新獲取隨機(jī)參數(shù)
2017-04-04
源自:深入淺出Java多線程 4-4
正在回答
在這個代碼中,一個線程是從EnergyTransferTask代碼文件開始執(zhí)行的,也就是說,這一個線程,每次被喚醒后都會重新執(zhí)行EnergyTransferTask代碼中的run,從而重新生成隨機(jī)能量值,這樣,就肯定有一種情況符合的,這樣就會滿足條件了,就是重新獲取隨機(jī)數(shù)。個人見解,有錯請各位指出
當(dāng)調(diào)用了wait方法后,線程是先釋放掉了鎖才進(jìn)入了wait set的,當(dāng)調(diào)用notify方法喚醒wait set里的線程后,線程獲得cpu資源則會重新去獲取鎖,重新去判斷條件,而不是處在之前沒有滿足條件的狀態(tài)。
舉報
帶你一起深入淺出多線程,掌握基礎(chǔ),展望進(jìn)階路線
2 回答關(guān)于滿足條件的線程等待問題
8 回答lockObj.notifyAll(); 說是喚醒所有在lockObj對象上等待的線程,energyBoxes[from] < amount那么肯定會出現(xiàn)有些線程這個條件不滿足的啊,咋能喚醒全部線程呢?
2 回答如果用return,那么條件不滿足時是怎么競爭資源的?
1 回答如果共享資源一直不滿足線程的要求,線程不就會一直傻傻的等待
4 回答多線程喚醒問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-09-03
在這個代碼中,一個線程是從EnergyTransferTask代碼文件開始執(zhí)行的,也就是說,這一個線程,每次被喚醒后都會重新執(zhí)行EnergyTransferTask代碼中的run,從而重新生成隨機(jī)能量值,這樣,就肯定有一種情況符合的,這樣就會滿足條件了,就是重新獲取隨機(jī)數(shù)。個人見解,有錯請各位指出
2017-04-05
當(dāng)調(diào)用了wait方法后,線程是先釋放掉了鎖才進(jìn)入了wait set的,當(dāng)調(diào)用notify方法喚醒wait set里的線程后,線程獲得cpu資源則會重新去獲取鎖,重新去判斷條件,而不是處在之前沒有滿足條件的狀態(tài)。