今天一個朋友問線程的幾種狀態,說了一部分,回家發現說的不全趕緊在網上找了下,順便下個帖子記錄下來。
新建(new)
新建一個線程的對象。
可運行(runable)
線程對象創建后,其他線程調用該線程的start方法。或者該線程位於可運行線程池中等待被線程調用,已獲取cpu的使用權。
運行(running)
可運行的線程獲取了cpu的使用權,執行程序代碼/
阻塞(block)
由於某些原因該線程放棄了cpu的使用權。停止執行。除非線程進入可運行的狀態,才會有機會獲取cpu的使用權。
1. 等待阻塞:運行中的線程執行wait方法,這時候該線程會被放入等待隊列。
2. 同步阻塞:運行中的線程獲取同步鎖,如果該同步鎖被別的線程占用,這個線程會成被放入鎖池,等待其他線程釋放同步鎖。
3. 其他阻塞:運行的線程執行sleep或者join方法這個線程會成為阻塞狀態。當sleep超時,join等待線程終止,該線程會進入可運行狀態。
死亡(dead)
線程run mian 執行完畢后,或者因為某些異常產生退出了 run 方法,該線程的生命周期結束。

