- 新建狀態:線程已經創建,還沒有在其上調用start( )方法。
- 就緒狀態:也稱可運行狀態,當線程調用start方法,但是線程調度程序還沒有把他選定為運行線程時線程所處的狀態。這時線程調用了start( )方法,但是該線程的run( )方法還沒有輪到被線程調度程序調用。這種狀態的線程都在可運行池中。
- 運行狀態:線程調用程序從運行池中選擇一個線程作為當前線程時線程所處的狀態,這也是線程進入運行狀態的唯一方式。如果一個線程想要運行,只能從可運行狀態變為運行狀態。這種狀態的線程是正在執行run( )方法。
- 阻塞狀態:線程仍然是活的,但是當前沒有條件運行。當等待事件出現之后它可以返回到可運行狀態,等待事件通常是等待獲取除調度執行需要的CPU之外的其他系統資源。這種狀態的線程正處於睡眠狀態,等待其他線程首先調度執行狀態等。
- 死亡狀態:當線程的run( )方法執行完畢線程就會進入死亡狀態。線程一旦死去,就不能復生。
注意:
1.線程為“創建狀態”時,啟動線程成功后進入“就緒狀態”,當創建對象,即new Thread()就進入了到創建狀態。
2.線程為“就緒狀態”時,獲得CPU資源進入“運行狀態”。線程運行狀態,線程才真正執行,當調用start()方法時,線程立即進入到就緒狀態,但不意味着立即調度執行。
3.線程為“運行狀態”時,線程自然執行結束后,外部干涉終止線程,進行“死亡狀態”。
4.線程為“運行狀態”時,釋放CPU資源后,進入“就緒狀態”。
5.線程為“運行狀態”時,等待用戶輸入,線程休眠的時候(如調用sleep、wait或同步鎖定,代碼不往下執行),進入“阻塞狀態”。
6.線程為“阻塞狀態”時,解除阻塞后,線程重新進入“就緒狀態”,等待CPU調度執行。