Thread的六種狀態

2022-03-26 07:16:39 字數 1076 閱讀 8408

執行緒共有6種狀態;在某一時刻只能是這6種狀態之一。這些狀態由thread.state這個列舉型別表示,並且可以通過getstate()方法獲得當前具體的狀態型別。

包括(new,runnable,blocked,waiting,timed_waiting,terminatmed)

new至今尚未啟動的執行緒的狀態。

當使用new乙個新執行緒時,如new thread(r),但還沒有執行start(),執行緒還沒有開始執行,這時執行緒的狀態就是new。

runnable

可執行執行緒的執行緒狀態。

當start()方法被呼叫時,執行緒就進入runnable狀態。此時的執行緒可能正在執行,也可能沒有執行

blocked

受阻塞並且正在等待監視器鎖的某一線程的執行緒狀態。

下列情況會進入阻塞狀態:

1.等待某個操作的返回,例如io操作,該操作返回之前,執行緒不會繼續下面的**。

2.等待某個「鎖」,在其他執行緒或程式釋放這個「鎖」之前,執行緒不會繼續執行。

3.等待一定的觸發條件。

4.執行緒執行了sleep方法。

5.執行緒被suspend()方法掛起。

乙個被阻塞的執行緒在下列情況下會被重新啟用:

1.執行了sleep()方法,睡眠時間已到。

2.等待的其他執行緒或程式持有的「鎖」已被釋放。

3.正在等待觸發條件的執行緒,條件得到滿足。

4.執行了suspend()方法,被呼叫了resume()方法。

5.等待的操作返回的執行緒,操作正確返回。

waiting

某一等待執行緒的執行緒狀態。

執行緒因為呼叫了object.wait()或thread.join()而未執行,就會進入waiting狀態。

timed_waiting

具有指定等待時間的某一等待執行緒的執行緒狀態。

執行緒因為呼叫了thread.sleep(),或者加上超時值來呼叫object.wait()或thread.join()而未執行,則會進入timed_waiting狀態。

terminated

已終止執行緒的執行緒狀態。

執行緒已執行完畢。它的run()方法已正常結束或通過丟擲異常而結束。

六種執行緒狀態詳解

執行緒從建立到執行到結束是乙個執行緒的生命週期,當執行緒被建立到結束過程中,不是一直處於執行狀態的,下面來介紹一下執行緒從執行到結束所有的狀態.執行緒狀態 導致狀態發生條件 new 新建 執行緒剛被建立,沒有啟動,也就是還沒呼叫start 方法.mythread t new mythread只有執行...

Bundle的狀態有六種

installed resolved starting active stopping uninstalled 注意 1 即使bundle已經停止,其export的package仍然是可以使用的,這也就意味著可以執行resolved狀態的bundle中export package的類。2 bundl...

Linux六種程序狀態R S D T Z X

此文章已同步更新至我的個人部落格 只有在該狀態的程序才可能在cpu上執行。而同一時刻可能有多個程序處於可執行狀態,這些程序的task struct結構 程序控制塊 被放入對應cpu的可執行佇列中 乙個程序最多只能出現在乙個cpu的可執行佇列中 程序排程器的任務就是從各個cpu的可執行佇列中分別選擇乙...