1. 程式人生 > >多線程基礎之線程的生命周期

多線程基礎之線程的生命周期

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()正常返回或拋出異常提前終止都會處於這個狀態,只會保持一次,由於一個線程只啟動一次

多線程基礎之線程的生命周期