閱讀215 返回首頁    go 阿裏雲 go 技術社區[雲棲]


線程狀態變遷

操作係統中線程/進程狀態的變遷

screenshot
圖一

新的:剛創建一個新的線程還沒執行相應的start方法。
    就緒態:線程執行所需要的資源都已經滿足了,就差CPU分配的時間片了
運行態:正在使用CPU時間片執行代碼
等待:正在等待獲取某些資源或某個事件的發生
終止:執行完程序

運行態——》就緒態:CPU分配的時間片到了,操作係統給出一個中斷,對該線程進行上下文切換,使其進入就緒態。
就緒態——》運行態:拿到CPU時間,從PCB載入上次執行的信息,繼續 運行程序
運行——》等待:正在運行的程序需要獲取額外的資源如:鎖,I/O.或某個事件的發生。
    等待——》就緒:已經獲取到運行所需要的資源。

JAVA 中線程狀態的變遷

screenshot圖二

java 中線程狀態的變遷細化了操作係統的狀態的變遷。多了阻塞態,和超時等待。進入阻塞態的線程是想進入同步塊。至於JVM為何要這樣定義其線程的狀態,我想可能是為了編程人員更好的操作線程吧。

圖一:來源於《操作係統概念第七版》
圖二:來源於《Java並發編程的藝術》

最後更新:2017-07-08 17:02:21

  上一篇:go  通過阿裏雲ECS從零開始構建網站
  下一篇:go  GitHub 實現了子資源完整性(SRI)