Future和Callable
阿新 • • 發佈:2021-12-14
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方法。