線程生命周期
阿新 • • 發佈:2018-08-07
start reads stat 否則 new 機會 無法 exc .net
1、線程的生命周期:新建(New)、就緒(Runnable)、運行(Running)、阻塞(Blocked)和死亡(Dead)5種狀態。
2、當線程對象調用了start()方法之後,該線程處於就緒狀態,Java虛擬機會為其創建方法調用棧和程序計數器,處於這個狀態中的線程並沒有開始運行,只是表示該線程可以運行了。至於該線程何時開始運行,取決於JVM裏線程調度器的調度。
3、啟動線程使用start()方法,而不是run()方法。
4、只能對處於新建狀態的線程調用start(),否則將引發IllegalThreadStateException異常。
5、所有現代的桌面和服務器操作系統都采用搶占式調度策略,只有當一個線程調用了它的sleep()方法或yield()方法後才會放棄所占用的資源。
6、線程從阻塞狀態只能進入就緒狀態,無法進入運行狀態。
7、程序會以如下三種方式結束,結束後就處於死亡狀態。
(1)run()或call()方法執行完成,線程正常結束。
(2)線程拋出一個未捕獲的Exception或Error。
(3)直接調用該線程的stop()方法來結束該線程——該方法容易導致死鎖,通常不推薦使用。
8、isAlive()方法測試某個線程是否已經死亡。
線程生命周期