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