Future和Callable


Thread類繼承自Runnable接口。


上面是java中的兩個線程接口類。
---------

Executor任務框架就是上面那一坨。

這個是頂層接口。


這個是強化了子類接口,一般我們指得異步任務框架接口指得就是上面的接口。

這個是為延遲執行任務設計的延遲任務框架,看他繼承的父類和實現的接口可以看出,他額外實現了ScheduledExecutorService接口,這個接口就是定義了延遲執行方法。

ThreadFactory繼承自AbstractExecutorService,而AbstractExecutorService實現了ExecutorService。

從它的構造函數是否可以看出,它在構建線程池。

上面是異步任務框架的工具類。
再回歸到Executor接口上,可以看到每個調用方法都可以返回Future對象。




根據方法結構和描述,可以看出Future接口提供了這兩個功能:可取消,阻塞獲取異步任務執行結果。
Future接口的一種子類接口RunnableFuture(可執行取消的任務接口),它的run方法,注釋提到這個方法是設置結果到result中。


此接口的一個實現類FutureTask類的run方法:
可以看到run方法提到了callable的call方法,并將獲得結果設置到返回結果中,因為Executors中有很多可以將runnable接口轉換為Callable接口的方法,因此Future可取消的異步任務執行需要callable接口作為基礎接口。
下面是FutureTask實現的run方法。


浙公網安備 33010602011771號