線程一共有五種狀態:新建、就緒、運行、阻塞、死亡。
1、新建狀態:當我們使用關鍵字new出一個線程來時,線程此時還沒有運行,也沒有就緒,只是單單的新建狀態。
2、就緒狀態:當程序運行到了線程中的start()方法時,此時的線程進入了就緒狀態,進入就緒狀態的線程不一定馬上運行而進入運行狀態(不一定馬上執行線程中的run()方法),需要等待CPU分配到時間片段。
3、運行狀態:當CPU分配時間片段給到線程后,程序會執行線程的run()方法,此時線程進入了運行狀態。
4、阻塞狀態:阻塞狀態是運行狀態中的線程沒有執行完run()方法里面的方法體而讓出CPU運行的時間片段。在運行中的線程可能由於某種原因使得線程進入阻塞狀態:比如線程里調用了slepp()方法而進入睡眠狀態,線程嘗試獲得鎖但鎖被其他線程占用或等待某個條件觸發等等。
5、死亡狀態:線程中的run()方法體正常執行完,線程正常死亡;發生了異常而未捕獲也會導致線程死亡。