線程的生命周期

線程的生命周期

??當(dāng)線程被創(chuàng)建并啟動(dòng)以后,它既不是一啟動(dòng)就進(jìn)入了執(zhí)行狀態(tài)癌佩,也不是一直處于執(zhí)行狀態(tài)木缝,在線程的生命周期中,它要經(jīng)過新建(New)围辙、就緒(Runnable)我碟、運(yùn)

行(Running)、阻塞(Blocked)和死亡(Dead)五種狀態(tài)姚建。尤其是當(dāng)線程啟動(dòng)以后矫俺,它不能一直“霸占”著CPU獨(dú)自運(yùn)行,所以CPU需要在多條線程之間切換,于是線程狀態(tài)也

會(huì)多次在運(yùn)行恳守、阻塞之間切換考婴。

1. 新建和就緒狀態(tài)

??當(dāng)程序使用new關(guān)鍵字創(chuàng)建了一個(gè)線程之后,該線程就處于新建狀態(tài)催烘,此時(shí)它和其他Java對象一樣沥阱,僅僅由Java虛擬機(jī)為其分配了內(nèi)存,并初始化了其成員變量

值伊群。此時(shí)的線程對象沒有表現(xiàn)出任何線程的動(dòng)態(tài)特征考杉,程序也不會(huì)執(zhí)行線程的線程執(zhí)行體。

??當(dāng)線程對象調(diào)用了start()方法之后舰始,該線程處于就緒狀態(tài)崇棠,Java虛擬機(jī)會(huì)為其創(chuàng)建方法調(diào)用棧和程序計(jì)數(shù)器,處于這個(gè)狀態(tài)的線程并沒有開始運(yùn)行丸卷,它只是表示該

線程可以運(yùn)行了枕稀。至于該線程何時(shí)開始運(yùn)行,取決于JVM里線程調(diào)度器的調(diào)度谜嫉。

2. 運(yùn)行和阻塞狀態(tài)

??如果處于就緒狀態(tài)的線程獲得了CPU萎坷,開始執(zhí)行run方法的線程執(zhí)行體,則該線程處于運(yùn)行狀態(tài)沐兰。

當(dāng)發(fā)生如下情況下哆档,線程將會(huì)進(jìn)入阻塞狀態(tài):

  1. 線程調(diào)用sleep方法主動(dòng)放棄所占用的處理器資源。

  2. 線程調(diào)用了一個(gè)阻塞式IO方法住闯,在該方法返回之前瓜浸,該線程被阻塞。

  3. 線程試圖獲得一個(gè)同步監(jiān)視器比原,但該同步監(jiān)視器正被其他線程鎖持有插佛。關(guān)于同步監(jiān)視器的知識(shí)將在后面有更深入的介紹。

  4. 線程在等待某個(gè)通知(notify)量窘。

  5. 程序調(diào)用了線程的suspend方法將該線程掛起朗涩。不過這個(gè)方法容易導(dǎo)致死鎖,所以程序應(yīng)該盡量避免使用該方法绑改。

??當(dāng)前正在執(zhí)行的線程被阻塞之后谢床,其他線程就可以獲得執(zhí)行的機(jī)會(huì)了。被阻塞的線程會(huì)在合適時(shí)候重新進(jìn)入就緒狀態(tài)厘线,注意是就緒狀態(tài)而不是運(yùn)行狀態(tài)识腿。也就是

說被阻塞線程的阻塞解除后,必須重新等待線程調(diào)度器再次調(diào)度它造壮。

針對上面的幾種情況渡讼,當(dāng)發(fā)生如下特定的情況將可以解除上面的阻塞骂束,讓該線程重新進(jìn)入就緒狀態(tài):

  1. 調(diào)用sleep方法的線程經(jīng)過了指定時(shí)間。

  2. 線程調(diào)用的阻塞式IO方法已經(jīng)返回成箫。

  3. 線程成功地獲得了試圖取得同步監(jiān)視器展箱。

  4. 線程正在等待某個(gè)通知時(shí),其他線程發(fā)出了一個(gè)通知蹬昌。

  5. 處于掛起狀態(tài)的線程被調(diào)用了resume恢復(fù)方法混驰。

線程狀態(tài)轉(zhuǎn)換圖:

image

3. 線程死亡

線程會(huì)以以下三種方式之一結(jié)束,結(jié)束后就處于死亡狀態(tài):

  1. run()方法執(zhí)行完成皂贩,線程正常結(jié)束栖榨。

  2. 線程拋出一個(gè)未捕獲的Exception或Error。

  3. 直接調(diào)用該線程的stop()方法來結(jié)束該線程——該方法容易導(dǎo)致死鎖明刷,通常不推薦使用婴栽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市辈末,隨后出現(xiàn)的幾起案子愚争,更是在濱河造成了極大的恐慌,老刑警劉巖挤聘,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件准脂,死亡現(xiàn)場離奇詭異,居然都是意外死亡檬洞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門沟饥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來添怔,“玉大人,你說我怎么就攤上這事贤旷」懔希” “怎么了?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵幼驶,是天一觀的道長艾杏。 經(jīng)常有香客問我,道長盅藻,這世上最難降的妖魔是什么购桑? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮氏淑,結(jié)果婚禮上勃蜘,老公的妹妹穿的比我還像新娘。我一直安慰自己假残,他們只是感情好缭贡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般阳惹。 火紅的嫁衣襯著肌膚如雪谍失。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天莹汤,我揣著相機(jī)與錄音快鱼,去河邊找鬼。 笑死体啰,一個(gè)胖子當(dāng)著我的面吹牛攒巍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荒勇,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼柒莉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沽翔?” 一聲冷哼從身側(cè)響起兢孝,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仅偎,沒想到半個(gè)月后跨蟹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡橘沥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年窗轩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片座咆。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痢艺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出介陶,到底是詐尸還是另有隱情堤舒,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布哺呜,位于F島的核電站舌缤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏某残。R本人自食惡果不足惜国撵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玻墅。 院中可真熱鬧卸留,春花似錦、人聲如沸椭豫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喳整,卻和暖如春谆构,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背框都。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來泰國打工搬素, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人魏保。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓熬尺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谓罗。 傳聞我的和親對象是個(gè)殘疾皇子粱哼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容