多執行緒Future的用法

2021-08-21 08:02:29 字數 742 閱讀 1392

在併發程式設計時,一般使用runnable,然後扔給執行緒池完事,這種情況下不需要執行緒的結果。

所以run的返回值是void型別。

如果是乙個多執行緒協作程式,比如菲波拉切數列,1,1,2,3,5,8…使用多執行緒來計算。

但後者需要前者的結果,就需要用callable介面了。

callable用法和runnable一樣,只不過呼叫的是call方法,該方法有乙個泛型返回值型別,你可以任意指定。

執行緒是屬於非同步計算模型,所以你不可能直接從別的執行緒中得到函式返回值。

這時候,future就出場了。futrue可以監視目標執行緒呼叫call的情況,當你呼叫future的get()方法以獲得結果時,當前執行緒就開始阻塞,直接call方法結束返回結果。

下面三段簡單的**可以很簡明的揭示這個意思:

runnable介面實現的沒有返回值的併發程式設計。

callable實現的存在返回值的併發程式設計。(call的返回值string受泛型的影響)

同樣是callable,使用future獲取返回值。

java多執行緒 Future 模式

public static void main string args throws exception futuretaskfuturetask new futuretask c1 new thread futuretask start callable c2 new callable futur...

多執行緒 Callable與Future模式

future常用方法 v get 獲取非同步執行的結果,如果沒有結果可用,此方法會阻塞直到非同步計算完成。v get long timeout timeunit unit 獲取非同步執行結果,如果沒有結果可用,此方法會阻塞,但是會有時間限制,如果阻塞時間超過設定的timeout時間,該方法將丟擲異常...

多執行緒 future模式初體驗

第一次使用多執行緒,雖然理解的不是很透徹,但是也值得記錄下。用的是future模式。建立個執行緒池 private executorservice cachedthreadpool executors.newfixedthreadpool 200,new siyuethreadfactory tes...