在Java中,線程有以下幾種狀態(tài):
新建(New):線程對象被創(chuàng)建,但還沒有調(diào)用start()方法啟動線程。
運行(Runnable):線程被調(diào)度并執(zhí)行。
阻塞(Blocked):線程被阻塞,等待某個條件的滿足,例如等待輸入/輸出完成、等待獲取鎖等。
等待(Waiting):線程進入等待狀態(tài),等待其他線程的通知或中斷??梢酝ㄟ^調(diào)用wait()方法、join()方法或LockSupport.park()方法使線程進入等待狀態(tài)。
計時等待(Timed Waiting):線程進入計時等待狀態(tài),等待一定的時間,時間到了會自動喚醒??梢酝ㄟ^調(diào)用sleep()方法、wait()方法的帶有超時參數(shù)的版本、join()方法的帶有超時參數(shù)的版本或LockSupport.parkNanos()、LockSupport.parkUntil()方法使線程進入計時等待狀態(tài)。
終止(Terminated):線程執(zhí)行完畢,終止運行。