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