Java中線程的生命周期指的是線程的狀態(tài)轉(zhuǎn)換,從它的誕生開始,到它的死亡結(jié)束。當(dāng)通過調(diào)用thread類的start()方法生成并執(zhí)行線程實(shí)例時(shí),線程進(jìn)入可運(yùn)行狀態(tài)。當(dāng)調(diào)用Thread類的sleep()或wait()方法時(shí),線程進(jìn)入不可運(yùn)行模式。若想要更加系統(tǒng)更加詳細(xì)的學(xué)習(xí)線程知識(shí),建議參加java培訓(xùn),有經(jīng)驗(yàn)豐富的專業(yè)講師面授指導(dǎo)教學(xué),能夠幫你更全面了解線程。
線程從不可運(yùn)行狀態(tài)返回到可運(yùn)行狀態(tài)并開始執(zhí)行語句。線程在退出run()進(jìn)程時(shí)死亡。在Java中,這些線程狀態(tài)轉(zhuǎn)換被稱為線程生命周期。
線程的生命周期基本上有4個(gè)階段,如下所示:
1.新狀態(tài)
當(dāng)我們使用Thread類構(gòu)造線程實(shí)體時(shí),線程就誕生了,并被定義為處于New狀態(tài)。也就是說,當(dāng)創(chuàng)建一個(gè)線程時(shí),它會(huì)進(jìn)入一個(gè)新狀態(tài),但是實(shí)例上的start()方法還沒有被調(diào)用。
2.可運(yùn)行狀態(tài)
處于可運(yùn)行狀態(tài)的線程準(zhǔn)備執(zhí)行代碼。當(dāng)調(diào)用新線程的start()函數(shù)時(shí),它將進(jìn)入可運(yùn)行狀態(tài)。
在可運(yùn)行環(huán)境中,線程已準(zhǔn)備好執(zhí)行,并等待處理器的可用性(CPU時(shí)間)。也就是說,線程已進(jìn)入等待執(zhí)行的線程隊(duì)列(行)。在java培訓(xùn)中,也有關(guān)于線程的學(xué)習(xí),學(xué)好這部分的知識(shí),可以避免在工作中出現(xiàn)的很多問題。
3.正在運(yùn)行狀態(tài)
運(yùn)行意味著處理器(CPU)已為線程分配了一個(gè)執(zhí)行時(shí)隙。當(dāng)線程調(diào)度器選擇處于可運(yùn)行狀態(tài)的線程執(zhí)行時(shí),它將加入運(yùn)行狀態(tài)。
在運(yùn)行狀態(tài)下,處理器為線程分配執(zhí)行時(shí)間并運(yùn)行其運(yùn)行過程。這是線程直接執(zhí)行其操作的狀態(tài)。只有從可運(yùn)行狀態(tài)開始,線程才會(huì)進(jìn)入運(yùn)行狀態(tài)。
4.阻止的狀態(tài)(不可運(yùn)行狀態(tài))
當(dāng)線程處于活動(dòng)狀態(tài)時(shí),即線程類對(duì)象持續(xù)存在,但調(diào)度程序無法選擇它來執(zhí)行。它現(xiàn)在處于非活動(dòng)狀態(tài)。
5.死亡狀態(tài)
當(dāng)線程的run()函數(shù)結(jié)束句子的執(zhí)行時(shí),它會(huì)自動(dòng)死亡或進(jìn)入死亡狀態(tài)。也就是說,當(dāng)線程退出run()進(jìn)程時(shí),它將被終止。當(dāng)調(diào)用stop()函數(shù)時(shí),線程也將停止。
結(jié)語
作為程序員,你有必要了解如何創(chuàng)建多線程應(yīng)用程序。參加java培訓(xùn)學(xué)習(xí),可以在短時(shí)間內(nèi)獲得很大提升,避免在學(xué)習(xí)上多走彎路,節(jié)省時(shí)間,提高學(xué)習(xí)效率。