多執行緒 Callable與Future模式

2021-10-05 22:54:03 字數 1099 閱讀 9289

future常用方法:

v get() :獲取非同步執行的結果,如果沒有結果可用,此方法會阻塞直到非同步計算完成。

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

boolean isdone() :如果任務執行結束,無論是正常結束或是中途取消還是發生異常,都返回true。

boolean iscanceller() :如果任務完成前被取消,則返回true。

boolean cancel(boolean mayinterruptrunning) :

如果任務還沒開始,執行cancel(…)方法將返回false;如果任務已經啟動,執行cancel(true)方法將以中斷執行此任務執行緒的方式來試圖停止任務,如果停止成功,返回true;當任務已經啟動,執行cancel(false)方法將不會對正在執行的任務執行緒產生影響(讓執行緒正常執行到完成),此時返回false;當任務已經完成,執行cancel(…)方法將返回false。mayinterruptrunning引數表示是否中斷執行中的執行緒。

通過方法分析我們也知道實際上future提供了3種功能:

(1)能夠中斷執行中的任務

(2)判斷任務是否執行完成

(3)獲取任務執行完成後額結果。

簡單的例子來體會使用callable和future來獲取任務結果的用法:

public

class

testmain})

; system.out.

println

(thread.

currentthread()

.getname()

+"執行緒執行其他任務");

// get() :獲取非同步執行的結果,如果沒有結果可用,此方法會阻塞直到非同步計算完成。

integer integer = future.

get();

system.out.

println

(integer);if

(executor != null)

}}

future模式:

多執行緒學習之Callable介面和Future類

二 編寫每個執行緒類的執行任務,實現callable介面,重寫call方法滿足自己的需求 三 主方法中啟動run方法 四 總結 public class mythread extends thread 重寫run方法滿足自己的需求 override public void run else brea...

多執行緒Callable

runnable不支援異常處理,而callable可以異常處理 runnable不能獲取執行緒塊的返回值,而callable可以通過futruetask獲取返回值 建立2個執行緒,分別獲取userinfo資訊與stuinfo資訊 callableuserinfocallable new callab...

多執行緒 Callable實現

1 實現callable介面 定義類studentthread實現callable介面,其中dealstudentinfores為業務處理完返回的結果集dto,dealstudentinforesq為需要處理的學生資訊的dto dealstudentinforesq學生資訊dto data apim...