這是一個關於Java線程詞彙的非常基本的問題。Java線程何時處於活動狀態?
我看不到任何可能的重複,但可能會有。
這個詞是什麼alive參考Oracles文檔?
是否當run()
方法還沒有完成,或者它是任何其他參數?
這是一個關於Java線程詞彙的非常基本的問題。Java線程何時處於活動狀態?
我看不到任何可能的重複,但可能會有。
這個詞是什麼alive參考Oracles文檔?
是否當run()
方法還沒有完成,或者它是任何其他參數?
根據的Javadoc你mentionned:如果已經開始,還沒有死
線程是活的。
線程「開始」時被調用其start()
方法和「管芯」在其run()
方法結束時,或者當stop()
(廢棄)被調用。所以是的,線程在其run()
方法仍在進行中時是「活着的」,但是在調用start()
和由JVM暗示調用run()
方法之間的時間窗口中,線程也「活着」。
您還可以查看@Marou Maroun建議的Thread.getState()
和interesting information about Thread States。
我也跟着他的建議警告你,如果拋出的異常被傳播超過run
以外,線程可以提前終止。在這種情況下線程不會活着。
編輯:正如@zakkak所建議的,即使run()
方法尚未啓動,該線程仍可以被視爲存在。如果您想對其何時被調用進行適當控制,請使用ScheduledExecutorService
,特別是schedule()
方法,該方法可爲您提供更精確的執行計劃。
當調用start
方法時,線程處於活動狀態,並且在線程死亡之前。即使它處於等待狀態,它仍然活着,它可以在等待狀態轉移到等待狀態之前停止。
從活着到死了,它可以從runnable
狀態移動到waiting
狀態。
線程處於新建/運行/等待狀態時處於活動狀態。從本質上講,run方法可以運行或不運行
'你必須'啓動()'線程爲了它是活着的: 'MyThread t = new MyThread(); t.isAlive();'返回'false' – Matthieu
從創建Thread對象的那一刻起,線程就被認爲是活着的,並啓動它直到它完成run方法或死亡。即使它處於空閒,跑步或睡眠狀態,它仍會處於活動狀態。
線程「活着」表示線程仍在運行。
是的,你可以說run()
方法正在爲Alive線程執行。
此外,isAlive()方法用於知道線程是否仍在運行。
final boolean isAlive()
如果被調用的線程仍在運行,則isAlive()
方法返回true。否則返回false。
當線程處於等待狀態時,會返回什麼狀態? – divine
線程處於新狀態或處於運行/等待狀態時處於活動狀態。並且我們還可以知道線程已死亡,它在內存中仍處於活動狀態。
在start()返回後直到run()返回到JVM,線程仍然活着。
答案就在那裏:「*如果一個線程已經啓動並且還沒有死,*線程就是活着的*」。這個鏈接也可以幫助你:http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/states.html – Maroun
謝謝你的圖。這真的很有幫助。 –