亚洲中文日韩国产一区|亚洲国产精品原创巨作AV无遮挡|色依依国内精品中文字幕|日韩精品免费在线视频

<button id="lyzxa"><option id="lyzxa"><em id="lyzxa"></em></option></button>
    java語言

    java線程的幾種狀態(tài)

    時間:2024-10-22 14:32:40 小花 java語言 我要投稿
    • 相關(guān)推薦

    java線程的幾種狀態(tài)

      導(dǎo)語:線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程序執(zhí)行流的最小單元。下面是Java線程的介紹,歡迎參考!

      java線程的幾種狀態(tài)1

      新建:new一個Thread對象或者其子類對象就是創(chuàng)建一個線程,當一個線程對象被創(chuàng)建,但是沒有開啟,這個時候,

      只是對象線程對象開辟了內(nèi)存空間和初始化數(shù)據(jù)。

      就緒:新建的對象調(diào)用start方法,就開啟了線程,線程就到了就緒狀態(tài)。

      在這個狀態(tài)的.線程對象,具有執(zhí)行資格,沒有執(zhí)行權(quán)。

      運行:當線程對象獲取到了CPU的資源。

      在這個狀態(tài)的線程對象,既有執(zhí)行資格,也有執(zhí)行權(quán)。

      凍結(jié):運行過程中的線程由于某些原因(比如wait,sleep),釋放了執(zhí)行資格和執(zhí)行權(quán)。

      當然,他們可以回到運行狀態(tài)。只不過,不是直接回到。

      而是先回到就緒狀態(tài)。

      死亡:當線程對象調(diào)用的run方法結(jié)束,或者直接調(diào)用stop方法,就讓線程對象死亡,在內(nèi)存中變成了垃圾。

      java線程的幾種狀態(tài)2

      先說結(jié)論:

      Java線程中一共有6種狀態(tài),分別為:NEW、RUNNABLE、WAITING、TIMED_WAITING、BLOCKED、TERMINATED,其中RUNNABLE包含READY和RUNNING狀態(tài),詳情可見下圖:  

      NEW:new一個Thread對象,但沒有調(diào)用start方法前,線程處于初始狀態(tài)

      RUNNABLE:在Java中包括兩種狀態(tài),RUNNING和READY

      READY:就緒態(tài),該狀態(tài)下的線程已經(jīng)獲得執(zhí)行所需的所有資源,只要CPU分配執(zhí)行權(quán)就能運行;所有就緒態(tài)的線程存放在就緒隊列中

      RUNNING:獲得cpu時間片,正在執(zhí)行的線程;由于每個cpu同一時刻只能執(zhí)行一條線程,因此每個cpu每個時刻只有一條線程運行。

      BLOCKED:阻塞態(tài),當線程請求鎖失敗時,就會進入阻塞態(tài),一旦請求成功就會進入就緒隊列等待cpu調(diào)度;所有阻塞態(tài)的線程存放在阻塞隊列中

      WAITING:等待態(tài),當運行中的線程調(diào)用wait、join、park函數(shù)時,當前線程進入等待態(tài);所有等待線程放入等待隊列;等待狀態(tài)的線程需要被其他線程喚醒才能繼續(xù)運行;進入等待狀態(tài)會釋放cpu時間片,以及資源(一般指鎖)

      TIMED_WAITING:超時等待態(tài),當運行中的'線程調(diào)用sleep(time)、wait(time)、parkNanos、parkUtil時會進入超時等待態(tài);和等待態(tài)的區(qū)別就是,超時之后會加入到阻塞隊列中去。

    【java線程的幾種狀態(tài)】相關(guān)文章:

    java的多線程12-04

    java多線程03-27

    java語言的多線程11-25

    Java線程編程中的主線程詳細介紹04-02

    Java多線程的開發(fā)技巧12-01

    關(guān)于Java多線程介紹04-02

    Java多線程問題總結(jié)11-27

    JAVA多線程之線程間的通信方式解析04-02

    java多線程-線程通信實例詳細解讀04-02