
new(新建):
當程序使用 new 創建一個線程后, 該線程處於新建狀態, 此時它和其它 java 對象一樣, 僅僅由 JVM 為其分配內存並初始化成員變量值.
runnable(可運行狀態):
實際上可以細分成兩種狀態: ready(就緒) 和 running(運行) 狀態.
ready(就緒):
當線程對象調用 start() 方法后, 該線程處於就緒狀態, 進入線程隊列排隊. 此時該狀態線程並未開始執行, 僅表示可以運行了. 至於該線程何時運行, 取決於 CPU 調度器的調度.
running(運行):
表示某線程對象被 CPU 調度器調度, 執行線程體. 就緒狀態和運行狀態時可以互相切換的, 切換的原因依舊參照 CPU 調度器調度了哪一個線程.
blocked(阻塞):
正在運行的線程遇到某個特殊情況, 比如同步, 等待I/O操作完成等. 進入阻塞狀態的線程會讓出 CPU 資源, 並暫時停止自己的執行.
waiting(等待):
有時一個可運行狀態線程轉變成等待狀態, 它會等待另一個線程來執行一個任務, 一個等待狀態的線程只有通過另一個線程通知它轉到可運行狀態, 才能繼續執行.
timed waiting(計時等待):
計時等待狀態是等待狀態的升級版, 它會有一個定時器, 在特定時間后自動喚醒該線程對象, 讓其進入就緒狀態.
terminated(終止):
即死亡狀態, 表示線程終止. 當線程成功執行完成或線程拋出未捕獲的 Exception 和 Error 或調用線程的 stop 方法時進入該狀態.
