Thread 生命周期
在使用多線程時,生命周期是非常重要的,下圖展示了Thread運行的狀態(tài)圖

threadLifeCycle.png
New Thread
使用new創(chuàng)建新的Thread對象時,線程狀態(tài)為 New Thread,此時線程不活動,是Java的內(nèi)部狀態(tài)
Runnable
在Thread對象上調(diào)用start()時,狀態(tài)變?yōu)镽unnable??丶x予Thread調(diào)度程序以完成執(zhí)行。是否立即運行線程或運行前將其保留在可運行的線程池中,取決于線程調(diào)度程序的OS。
Running
線程正在執(zhí)行時,狀態(tài)為Running,線程調(diào)度程序從可運行的線程池中選擇一個線程,并將狀態(tài)改為Running,CPU執(zhí)行線程,線程狀態(tài)可改為Runnable、Dead或Blocked。
運行狀態(tài)取決于時間切片、完成run()或等待資源。
阻塞、等待
線程可以等待其他線程使用線程連接完成,等待待使用資源。若線程等待狀態(tài)結束,則變?yōu)镽unnable,且會被移回可運行的線程池。
DEAD
若線程執(zhí)行完成,則狀態(tài)變?yōu)镈ead,且認為它不存在。