多線程基礎之線程的生命周期
阿新 • • 發佈:2018-07-11
thread notifyall 結束 run 線程的生命周期 port 時間限制 包括 方法
一個java線程從啟動到結束運行,可能經歷若幹狀態。
NEW:一個已創建而未啟動的線程處於該狀態,由於一個線程只啟動一次,所以只有一次處於該狀態。
RUNNABLE:該狀態是一個復合狀態。包括READY和RUNNING。前者表示該線程處於可以被線程調度器調度成RUNNING狀態。後者表示該線程的run方法正在被
jvm虛擬機調用,通過yeild方法可以變為READY狀態。
BLOCKED:一個線程發起一個阻塞式I/O操作後,或者被其它線程獨占資源(比如鎖),相應的線程會處於該狀態,當線程重新獲得資源後,又可以變為RUNNABLE.
WAITING : 一個線程執行了某些方法後就會處於這種等待狀態。包括Object.wait(),Thread.join(),LockSupport.park(Object).從WAITING變為RUNNABLE,Object.notify(),
/notifyAll()和LockSupport.unPart(Object).
TIMED_WATING : 不是無限期等待,帶有時間限制,時間限制一到,不管如何,自動轉為RUNNABLE
TERMINATED: Thread.run()正常返回或拋出異常提前終止都會處於這個狀態,只會保持一次,由於一個線程只啟動一次
多線程基礎之線程的生命周期