Java執行緒的啟動方式及生命週期
阿新 • • 發佈:2020-12-05
-
繼承Thread類,
X extends Thread
;然後X.start
-
實現Runnable介面,
X implements Runnable
;然後交給Thread執行
注:在Thread原始碼中的註釋裡面表面,新啟執行緒的方式只有以上兩種。但是缺少一項功能,那就是當執行緒完成後,我們無法拿到返回結果,為了支援此功能,java中提供了Callable介面。而使用Callable時,是交由FutureTask來執行,而FutureTask實現了Runnable,因此我們可以把Callable和Runnable歸為一類。
執行緒的狀態(生命週期)
Java中執行緒的狀態分為6種:
-
初始(NEW):建立了一個執行緒物件,但是還沒有呼叫
Start()
方法。 -
執行(RUNNABLE):Java執行緒中將就緒(ready)和執行中(running)兩種狀態統稱為“執行”狀態。
執行緒建立物件後,該物件的
statr()
方法被呼叫,該執行緒處於就緒狀態(ready),等待執行緒的排程獲取CPU的使用權,當獲取CPU時間片後,變為執行中狀態(running) -
阻塞(BLOCKED):表示執行緒進入阻塞狀態。
-
等待(WAITING):進入該狀態的執行緒需要等待其他執行緒做出一些特定動作(通知或中斷)
-
超時等待(TIMED_WAITING):該狀態不同於WAITING,它可以在指定的時間後自行返回。
-
終止(TERMINATED):表示執行緒已執行完畢。