zzh

zzh

ThreadPoolExecutor 回調函數 Future

本文只要探究 ThreadPoolExector 中 submit 任務以後,future 回調函數生成發生的事情。
image

如上圖所示,submit 以後首先進入該程式碼段,在程式碼段中主要執行兩個任務:一個是創建一個 RunnableFuture 對象,一個是開啟線程執行 RunnableFuture。

下面進入第一行核心程式碼,如下所示,創建了一個 FutureTask 對象。
image

image

對於 FutureTask 對象最核心的成員變量如下:

image

下面進入第二行核心程式碼,其本質就是開啟一個線程並執行:

image

之後我們考慮 java 如何通過 future.get () 和 future.cancel () 來開啟、取消一個任務。
首先看 future.get () 方法:

image

image

那麼 outcome 來自於哪裡?當然是 futuretask 中的 run 方法,在 run 方法中會把任務完成後的結果賦值給 outcome 成員變量。
而對於 future.cancel () 方法,則是設置線程為中斷狀態來取消任務:

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。