兩個線程交替的疑問
Java中某條線程是否只有當顯式調用了sleep()方法時,才會休眠并讓出處理器資源?我的運行結果中兩個線程的確是交替運行,但不是運行完整10次就進行交替。也就是說某一線程的sleep()方法還未被調用時,另一線程就競爭到了cpu資源。這個結果是否正確呢?多謝回答~
Java中某條線程是否只有當顯式調用了sleep()方法時,才會休眠并讓出處理器資源?我的運行結果中兩個線程的確是交替運行,但不是運行完整10次就進行交替。也就是說某一線程的sleep()方法還未被調用時,另一線程就競爭到了cpu資源。這個結果是否正確呢?多謝回答~
2015-02-21
舉報
2015-02-25
你得結果也是正常的。簡單說只有Running的線程擁有CPU,CPU時間片用完就釋放。這就是為什么還沒調用sleep(),另一個線程就執行了。要把整個問題說清楚需要了解Java線程的狀態及遷移的知識。你可以參考慕課上的《細說Java多線程》
2016-12-05
我也在想這個問題
2015-02-26
這個和操作系統有關,Linux按照時間分片,Windows要等線程主動釋放;在Java中,調用靜態方法會造成主動釋放。
你可以這樣測試:A和B兩個線程,里面變量從0加到N(隨意),循環結束之后再調用System.out.println();Windows上應該是先start()的那個線程首先輸出,有一點需要注意的是,除了最后的輸出以外,不要有任何的靜態方法調用!