1.一個線程進入synchronized塊,鎖住本方法
2.判斷energyBoxes[from]能量不夠轉移的話就wait()進入等待池同時釋放鎖
3.其他線程執行完畢后,如果本線程剛好拿到鎖,就從wait()下一條語句執行,也就是while()判斷。(這也是我同事給我講了好久才反應過來的,用if下一次就不判斷了)。這時候energyBoxes[from]的值有可能被其他線程修改了,也就是說不一定滿足條件了
4.如果還是進入while,那就繼續執行3;否則跳出循環,執行后面語句。
2.判斷energyBoxes[from]能量不夠轉移的話就wait()進入等待池同時釋放鎖
3.其他線程執行完畢后,如果本線程剛好拿到鎖,就從wait()下一條語句執行,也就是while()判斷。(這也是我同事給我講了好久才反應過來的,用if下一次就不判斷了)。這時候energyBoxes[from]的值有可能被其他線程修改了,也就是說不一定滿足條件了
4.如果還是進入while,那就繼續執行3;否則跳出循環,執行后面語句。
2019-10-10
最新回答 / qq_慕圣2566072
代碼中用了yield的方法,該方法與sleep()類似,只是不能由用戶指定暫停多長時間,并且yield()方法只能讓同優先級的線程有執行的機會。但是不確定暫停時間
2019-06-19
最新回答 / tiger愛小狄
你問的是哪兩個結果呢?視頻中應該是三個結果 1.intterrupt未中斷線程運行? ?2.interrupt中斷了線程運行? ?3.拋出異常,未中斷線程運行
2019-06-18