線程有哪些基本狀態,每種狀態都代表什么


image.png


new(新建):

當程序使用 new 創建一個線程后, 該線程處於新建狀態, 此時它和其它 java 對象一樣, 僅僅由 JVM 為其分配內存並初始化成員變量值.

runnable(可運行狀態):

實際上可以細分成兩種狀態: ready(就緒) 和 running(運行) 狀態.

ready(就緒):

當線程對象調用 start() 方法后, 該線程處於就緒狀態, 進入線程隊列排隊. 此時該狀態線程並未開始執行, 僅表示可以運行了. 至於該線程何時運行, 取決於 CPU 調度器的調度.

running(運行):

表示某線程對象被 CPU 調度器調度, 執行線程體. 就緒狀態和運行狀態時可以互相切換的, 切換的原因依舊參照 CPU 調度器調度了哪一個線程.

blocked(阻塞):

正在運行的線程遇到某個特殊情況, 比如同步, 等待I/O操作完成等. 進入阻塞狀態的線程會讓出 CPU 資源, 並暫時停止自己的執行.

waiting(等待):

有時一個可運行狀態線程轉變成等待狀態, 它會等待另一個線程來執行一個任務, 一個等待狀態的線程只有通過另一個線程通知它轉到可運行狀態, 才能繼續執行.

timed waiting(計時等待):

計時等待狀態是等待狀態的升級版, 它會有一個定時器, 在特定時間后自動喚醒該線程對象, 讓其進入就緒狀態.

terminated(終止):

即死亡狀態, 表示線程終止. 當線程成功執行完成或線程拋出未捕獲的 Exception 和 Error 或調用線程的 stop 方法時進入該狀態.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM