每一個線程都有一個誕生到消亡的聲明週期。在Java中,線程的聲明週期有新建狀態,就緒狀態,運行狀態,阻塞狀態和終止狀態等五個狀態,以下圖所示:html
下面根據我的理解就這五種狀態,作個簡短的分享,要是用什麼不對的地方還請指教!!!app
1.新建狀態ide
新建狀態即建立一個新的線程對象。當一個線程處於建立狀態時,系統不爲它分配資源,經過調用start方法進入就緒狀態。例如:
spa
Thread myThread=new Thread();
2.就緒狀態線程
Java經過start方法啓動處於新建狀態的線程對象,使其進入就緒狀態。處於就緒狀態的線程已經具有了運行條件,將進入線程隊列等待系統爲其分配CPU,一旦得到了CPU,線程進入運行狀態,並調用本身的run方法。例如:
orm
myThread.start();
3.運行狀態htm
處於就緒狀態的線程被調度並得到CPU的處理後進入到運行狀態,每個Thread類及其子類的對象都有一個run()方法,當線程對象被調度執行的時候,它將自動調用本對象的run()方法。要實現線程的操做和功能,須要在run()方法中編寫語句,即實現方法的重載。因此說對線程的操做應該寫在run()方法中。
對象
4.阻塞狀態blog
處於運行狀態的線程,在某些狀況下會暫時停止運行,進入阻塞狀態。阻塞狀態下的線程不能進入就緒隊列,只有當引發阻塞的緣由消除時,線程便轉入就緒狀態,從新到就緒隊列中排隊等待,當獲取CPU資源時,從原來終止位置開始繼續運行。
生命週期
注:使線程進入阻塞狀態的操做有以下幾種:
a.調用sleep()方法使線程進入休眠狀態;
b.調用suspend()方法使線程進入掛起狀態;
c.調用wait()方法,進入等待狀態;
d.等待輸入輸出操做。
5.終止狀態
終止狀態是線程生命週期的最後一個階段。線程終止主要有兩個緣由:
a.線程完成所有工做,正常結束運行; https://yyk.fh21.com.cn/hospital_8053/tsyl.html
b.線程被強制終止運行。如:經過執行stop()方法或destroy()方法來終止一個線程。