併發程式設計(4)執行緒的生命週期及基本狀態

2021-07-10 17:26:53 字數 706 閱讀 2213

執行緒從建立到最終的消亡,要經歷若干個狀態,一般來說,執行緒包括以下這幾個狀態:新建(new),可執行(runnable),執行(running),阻塞(blocked),死亡(dead)。

.1)新建(new)

執行緒物件已建立,但是未呼叫start()方法。

.2)可執行(runnable)

.3)執行(running)

當cpu開始排程處於就緒狀態的執行緒時,此時執行緒才得以真正執行,即進入到執行狀態。就緒狀態是進入到執行狀態的唯一入口,也就是說,執行緒要想進入執行狀態執行,首先必須處於就緒狀態中。

.4)阻塞(blocked)

處於執行狀態中的執行緒由於某種原因,暫時放棄對cpu的使用權,停止執行,此時進入阻塞狀態,直到其進入到就緒狀態,才有機會再次被cpu呼叫以進入到執行狀態。根據阻塞產生的原因不同,阻塞狀態又可以分為三種:

1.等待阻塞:執行狀態中的執行緒執行wait()方法,使本執行緒進入到等待阻塞狀態;

2.同步阻塞 -- 執行緒在獲取synchronized同步鎖失敗(因為鎖被其它執行緒所占用),它會進入同步阻塞狀態;

3.其他阻塞 -- 通過呼叫執行緒的sleep()或join()或發出了i/o請求時,執行緒會進入到阻塞狀態。當sleep()狀態超時、join()等待執行緒終止或者超時、或者i/o處理完畢時,執行緒重新轉入就緒狀態。

.5)死亡(dead)

執行緒執行完了或者因異常退出了run()方法,該執行緒結束生命週期。

執行緒生命週期及狀態

示例2 多執行緒執行狀態切換示例 public class demo2 system.out.println 沒呼叫start方法,thread1當前狀態 thread1.getstate tostring thread1.start thread.sleep 2000l 等待thread1執行結束...

WCF的基本程式設計生命週期

windows communication foundation wcf 可讓應用程式通報它們是在同一臺計算機上 分布在 internet 上還是在不同的應用程式平台上。本主題概述了生成 wcf 應用程式所需的任務。要執行的基本任務依次為 定義服務協定。服務協定指定服務的簽名 服務交換的資料和其他協...

執行緒的生命週期

1.新建 threadd thread new thread runnable 2.就緒 thread.start 將執行緒放入就緒等待佇列中,等待cpu時間片的分配 3.執行 獲取到cpu時間片,一直執行到結束,除非有優先順序更高執行緒進入或者自動放棄cpu資源 4.死亡 正常結束或被其他執行緒殺...