Android多線程(二)——線程的生命周期

前言
我們已知線程的三種創(chuàng)建方式:繼承Thread焰檩,實(shí)現(xiàn)Runnable,實(shí)現(xiàn)Callable
鏈接:http://www.reibang.com/p/620ad2380145

該多線程系列是基于只有一個(gè)單核CPU來講的叛薯,單核CPU上運(yùn)行的多線程程序, 同一時(shí)間只能一個(gè)線程在跑, 系統(tǒng)幫你切換線程而已, 系統(tǒng)給每個(gè)線程分配時(shí)間片來執(zhí)行, 每個(gè)時(shí)間片大概2~10ms左右, 看起來像是同時(shí)跑, 但實(shí)際上是每個(gè)線程跑一點(diǎn)點(diǎn)就換到其它線程繼續(xù)跑

線程被創(chuàng)建并啟動(dòng)以后,它并不是一啟動(dòng)就進(jìn)入了執(zhí)行狀態(tài)知牌,也不是一直處于執(zhí)行狀態(tài)丹拯,線程也是有生命周期的站超。線程生命周期有5種狀態(tài):新建(New)就緒乖酬,運(yùn)行死相,阻塞死亡咬像。

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

一. 新建

當(dāng)程序使用new 關(guān)鍵字創(chuàng)建了一個(gè)線程之后算撮,該線程就處于新建狀態(tài)。
處于新建狀態(tài)县昂,和其他Java對(duì)象一樣肮柜,僅僅由虛擬機(jī)為其分配內(nèi)存,并初始化成員變量的值倒彰,不會(huì)有任何線程的動(dòng)態(tài)特征审洞。

二. 就緒

線程調(diào)用start()方法后,該線程就處于就緒狀態(tài)待讳。
線程處于就緒狀態(tài)并不會(huì)立即進(jìn)入運(yùn)行狀態(tài)芒澜,至于程序何時(shí)開始運(yùn)行,取決于JVM線程調(diào)度器的調(diào)度创淡。
就緒和運(yùn)行狀態(tài)之間的轉(zhuǎn)換不受程序控制痴晦,由系統(tǒng)線程調(diào)度所決定,就緒狀態(tài)獲得處理器資源后才進(jìn)入運(yùn)行狀態(tài)琳彩。
如果在主線程里希望調(diào)用子線程的start()方法后子線程立即進(jìn)入運(yùn)行狀態(tài)誊酌,可以使用主線程的Thread.sleep(1)睡眠1毫秒,在主線程阻塞1秒期間露乏,CPU會(huì)去執(zhí)行另一個(gè)處于就緒狀態(tài)的線程碧浊,這樣相當(dāng)于子線程立即進(jìn)入運(yùn)行狀態(tài)。

注意:只能對(duì)處于新建狀態(tài)的線程調(diào)用start()方法施无,不然會(huì)報(bào)IllegalThreadStateException異常

三. 運(yùn)行

如果處于就緒狀態(tài)的線程獲得了CPU辉词,開始執(zhí)行run()方法或call()方法的線程執(zhí)行體,則該線程處于運(yùn)行狀態(tài)猾骡。
一個(gè)線程開始運(yùn)行后瑞躺,不可能一直處于運(yùn)行狀態(tài)(除非它的線程執(zhí)行體時(shí)間足夠短,瞬間就執(zhí)行結(jié)束)兴想,線程在運(yùn)行過程中需要被中斷

四. 阻塞

線程在運(yùn)行中被中斷幢哨,使其他線程獲得執(zhí)行的機(jī)會(huì),這個(gè)時(shí)候稱為阻塞嫂便。
阻塞解除——>就緒狀態(tài)——>運(yùn)行狀態(tài)

常見被阻塞并以及解除阻塞重新進(jìn)入就緒狀態(tài)的方法:
  • 調(diào)用sleep()方法
    調(diào)用sleep()方法的線程經(jīng)過了指定時(shí)間捞镰。
  • 調(diào)用阻塞式IO方法,在該方法返回之前,該線程被阻塞
    線程調(diào)用的阻塞式IO方法已經(jīng)返回岸售。
  • 線程試圖獲得一個(gè)同步監(jiān)視器践樱,但該同步監(jiān)視器被其他線程所持有
    線程成功獲得了試圖取得的同步監(jiān)視器。
  • 線程在等待某個(gè)通知(notify)
    線程正在等待某個(gè)通知時(shí)凸丸,其他線程發(fā)出了一個(gè)通知拷邢。

注意sleep()方法和yield()方法,yield()方法不是阻塞屎慢,而是直接進(jìn)入就緒狀態(tài)瞭稼。

五. 死亡

  • run()或call()方法執(zhí)行完成,線程正常結(jié)束腻惠。
  • 線程拋出一個(gè)未捕獲的Exception或Error环肘。

調(diào)用線程對(duì)象的isAlive()方法可判斷線程是否死亡,線程處于就緒集灌,運(yùn)行悔雹,阻塞三種狀態(tài)時(shí)返回true,處于新建和死亡時(shí)欣喧,返回false

注意:已經(jīng)死亡的線程不能調(diào)用start()方法荠商,會(huì)報(bào)IllegalThreadStateException異常,即已死亡的線程無法再次運(yùn)行续誉。
只能對(duì)新建狀態(tài)的線程調(diào)用start()方法

上一篇:Android多線程(一)——線程的創(chuàng)建方式:http://www.reibang.com/p/620ad2380145
下一篇:Android多線程(三)——線程控制:
http://www.reibang.com/p/3f4ed4296169

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市初肉,隨后出現(xiàn)的幾起案子酷鸦,更是在濱河造成了極大的恐慌,老刑警劉巖牙咏,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臼隔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妄壶,警方通過查閱死者的電腦和手機(jī)摔握,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丁寄,“玉大人氨淌,你說我怎么就攤上這事∫粱牵” “怎么了盛正?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)屑埋。 經(jīng)常有香客問我豪筝,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任续崖,我火速辦了婚禮敲街,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘严望。我一直安慰自己多艇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布著蟹。 她就那樣靜靜地躺著墩蔓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萧豆。 梳的紋絲不亂的頭發(fā)上奸披,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音涮雷,去河邊找鬼阵面。 笑死,一個(gè)胖子當(dāng)著我的面吹牛洪鸭,可吹牛的內(nèi)容都是我干的样刷。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼览爵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼置鼻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜓竹,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤箕母,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后俱济,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘶是,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年蛛碌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了聂喇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔚携,死狀恐怖希太,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酝蜒,我是刑警寧澤跛十,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站秕硝,受9級(jí)特大地震影響芥映,放射性物質(zhì)發(fā)生泄漏洲尊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一奈偏、第九天 我趴在偏房一處隱蔽的房頂上張望坞嘀。 院中可真熱鬧,春花似錦惊来、人聲如沸丽涩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矢渊。三九已至,卻和暖如春枉证,著一層夾襖步出監(jiān)牢的瞬間矮男,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工室谚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毡鉴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓秒赤,卻偏偏與公主長(zhǎng)得像猪瞬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子入篮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361