線程的生命周期是線程對象的生老病死,即線程的狀態。
線程生命周期可以通過getState()方法獲得, 線程的狀態是Thread.State枚舉類型定義的, 由以下幾種:
● NEW,新建狀態. 創建了線程對象,在調用start()啟動之前的狀態。
● RUNNABLE,可運行狀態. 它是一個復合狀態,包含:READY和RUNNING兩個狀態. READY狀態該線程可以被線程調度器進行調度使它處于RUNNING狀態, RUNING狀態表示該線程正在執行. Thread.yield()方法可以把線程由RUNNING狀態轉換為READY狀態。
● BLOCKED阻塞狀態.線程發起阻塞的I/O操作,或者申請由其他線程占用的獨占資源,線程會轉換為BLOCKED阻塞狀態. 處于阻塞狀態的線程不會占用CPU資源. 當阻塞I/O操作執行完,或者線程獲得了其申請的資源,線程可以轉換為RUNNABLE。
● WAITING等待狀態. 線程執行了object.wait(), thread.join()方法會把線程轉換為WAITING等待狀態, 執行object.notify()方法,或者加入的線程執行完畢,當前線程會轉換為RUNNABLE狀態。
● TIMED_WAITING狀態,與WAITING狀態類似,都是等待狀態.區別在于處于該狀態的線程不會無限的等待,如果線程沒有在指定的時間范圍內完成期望的操作,該線程自動轉換為RUNNABLE。
● TERMINATED終止狀態,線程結束處于終止狀態