- 相關推薦
java線程的幾種狀態
導語:線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。下面是Java線程的介紹,歡迎參考!
java線程的幾種狀態1
新建:new一個Thread對象或者其子類對象就是創建一個線程,當一個線程對象被創建,但是沒有開啟,這個時候,
只是對象線程對象開辟了內存空間和初始化數據。
就緒:新建的對象調用start方法,就開啟了線程,線程就到了就緒狀態。
在這個狀態的.線程對象,具有執行資格,沒有執行權。
運行:當線程對象獲取到了CPU的資源。
在這個狀態的線程對象,既有執行資格,也有執行權。
凍結:運行過程中的線程由于某些原因(比如wait,sleep),釋放了執行資格和執行權。
當然,他們可以回到運行狀態。只不過,不是直接回到。
而是先回到就緒狀態。
死亡:當線程對象調用的run方法結束,或者直接調用stop方法,就讓線程對象死亡,在內存中變成了垃圾。
java線程的幾種狀態2
先說結論:
Java線程中一共有6種狀態,分別為:NEW、RUNNABLE、WAITING、TIMED_WAITING、BLOCKED、TERMINATED,其中RUNNABLE包含READY和RUNNING狀態,詳情可見下圖:
NEW:new一個Thread對象,但沒有調用start方法前,線程處于初始狀態
RUNNABLE:在Java中包括兩種狀態,RUNNING和READY
READY:就緒態,該狀態下的線程已經獲得執行所需的所有資源,只要CPU分配執行權就能運行;所有就緒態的線程存放在就緒隊列中
RUNNING:獲得cpu時間片,正在執行的線程;由于每個cpu同一時刻只能執行一條線程,因此每個cpu每個時刻只有一條線程運行。
BLOCKED:阻塞態,當線程請求鎖失敗時,就會進入阻塞態,一旦請求成功就會進入就緒隊列等待cpu調度;所有阻塞態的線程存放在阻塞隊列中
WAITING:等待態,當運行中的線程調用wait、join、park函數時,當前線程進入等待態;所有等待線程放入等待隊列;等待狀態的線程需要被其他線程喚醒才能繼續運行;進入等待狀態會釋放cpu時間片,以及資源(一般指鎖)
TIMED_WAITING:超時等待態,當運行中的'線程調用sleep(time)、wait(time)、parkNanos、parkUtil時會進入超時等待態;和等待態的區別就是,超時之后會加入到阻塞隊列中去。
【java線程的幾種狀態】相關文章:
java的多線程12-04
java多線程03-27
java語言的多線程11-25
Java線程編程中的主線程詳細介紹04-02
Java多線程的開發技巧12-01
關于Java多線程介紹04-02
Java多線程問題總結11-27
JAVA多線程之線程間的通信方式解析04-02
java多線程-線程通信實例詳細解讀04-02