1. 程式人生 > 實用技巧 >Java執行緒的啟動方式及生命週期

Java執行緒的啟動方式及生命週期

執行緒的啟動方式只有兩種

  1. 繼承Thread類,X extends Thread;然後X.start

  2. 實現Runnable介面,X implements Runnable;然後交給Thread執行

注:在Thread原始碼中的註釋裡面表面,新啟執行緒的方式只有以上兩種。但是缺少一項功能,那就是當執行緒完成後,我們無法拿到返回結果,為了支援此功能,java中提供了Callable介面。而使用Callable時,是交由FutureTask來執行,而FutureTask實現了Runnable,因此我們可以把Callable和Runnable歸為一類。

執行緒的狀態(生命週期)

Java中執行緒的狀態分為6種:

  1. 初始(NEW):建立了一個執行緒物件,但是還沒有呼叫Start()方法。

  2. 執行(RUNNABLE):Java執行緒中將就緒(ready)和執行中(running)兩種狀態統稱為“執行”狀態。

    執行緒建立物件後,該物件的statr()方法被呼叫,該執行緒處於就緒狀態(ready),等待執行緒的排程獲取CPU的使用權,當獲取CPU時間片後,變為執行中狀態(running)

  3. 阻塞(BLOCKED):表示執行緒進入阻塞狀態。

  4. 等待(WAITING):進入該狀態的執行緒需要等待其他執行緒做出一些特定動作(通知或中斷)

  5. 超時等待(TIMED_WAITING):該狀態不同於WAITING,它可以在指定的時間後自行返回。

  6. 終止(TERMINATED):表示執行緒已執行完畢。