執行緒的生命週期(比喻生動,通俗易懂)

2021-08-15 22:46:34 字數 680 閱讀 3010

執行緒有5中狀態,分別是:新建(出生)、就緒、執行、阻塞和死亡。我們可以看成三個階段,出生——生長——死亡。

就緒、執行、阻塞有各自的判定條件,我先上圖,讓大家看清楚流程,然後再舉例子來比喻。

我們把執行緒比喻成古代皇帝的乙個兒子(尼古拉斯.趙四),執行緒執行就是當上太子(有更大的權力):

當這個皇子(趙四)從娘胎裡面生下來後,就代表新建執行緒了;

這個皇子健康成長,可以成為太子備選人,但不能行使太子權力(就緒狀態,有執行的資格,沒有執行權);

皇子在皇帝(就是你自己)面前表現很好,皇帝很喜歡他,讓他當太子,行使太子權力(搶到cpu資源,執行緒執行);

當趙四當了太子後,會有一下三種可能

a.如果皇子在當太子期間(執行緒執行),有其他的皇子表現更好,把現在這個皇子的太子位子搶走了,那麼這個皇子(趙四)會恢復到皇子身份,不在是太子(沒有執行權,回到就緒階段,準備再當太子);

b.但如果皇子在當太子期間(執行緒執行),被人施了魔法(sleep(),wait()方法),導致他生病了,不能當太子,身體不好,也沒有當太子的資格,現在就只能身體恢復好,然後就有了當太子的資格(執行緒阻塞,沒有執行資格和執行權,最後回到就緒階段)。

c.當皇子把他自己的事情處理完後,執行緒就結束了,執行緒死亡。

React常用生命週期函式通俗易懂

學習生命週期小套路 會在什麼時候被呼叫 有什麼用 該標籤會導致某些生命週期函式執行的時候,執行多了一次。該標籤僅在開發環境下生效,如果執行yarn build打包成生產環境 的時候就會自動被乾掉。開發環境下 第二次執行是為了嚴格校驗。直接翻譯過來叫 建構函式,構造器。執行時機 類被初始化的時候自動觸...

angular學習之通俗易懂篇 生命週期

直接梳理應用場景,後續有新的理解再不斷補充.1 constructor 對區域性變數進行初始化 2 ngonchanges 被繫結的輸入屬性的值發生變化時呼叫 父子元件傳值的時候會觸發 3 ngoninit 一般在這裡請求資料,並初始化 4 ngdocheck 檢測5 ngaftercontenti...

通俗理解執行緒的生命週期

新建狀態 執行緒嬰兒剛出生到被呼叫start 方法之前屬於新建狀態,雖然在程式中新建了乙個執行緒,但此時執行緒還沒有啟動,屬於新生狀態,還不會走路。就緒狀態 執行緒出生以後在程式中被呼叫start 方法,此時執行緒進入就緒狀態,也就是剛會站,以後是飛還是走路,就看作業系統這個爸爸怎麼說了。執行狀態 ...