亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

java語言

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

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

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

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

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

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

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

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

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

  運(yùn)行:當(dāng)線程對象獲取到了CPU的資源。

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

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

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

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

  死亡:當(dāng)線程對象調(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一個(gè)Thread對象,但沒有調(diào)用start方法前,線程處于初始狀態(tài)

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

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

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

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

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

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

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

java的多線程12-04

java多線程03-27

java語言的多線程11-25

Java線程編程中的主線程詳細(xì)介紹04-02

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

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

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

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

java多線程-線程通信實(shí)例詳細(xì)解讀04-02