多執行緒中Future與Callable理解及使用

2021-08-22 17:59:00 字數 449 閱讀 3763

對於實現runnable介面的執行緒,執行過程中無法得到物件的返回值,callbale介面就可以做到獲取執行緒執行的結果.

每乙個任務都是乙個執行緒,利用executeorservice.submit來提交,然後返回future物件,這個物件有任務的生命週期,提供了相應的方法來判斷是否已經完成或者取消以及獲取任務的結果和取消任務等.get方法的行為取決於任務的狀態(未開始,執行,己完成).己完成那麼get會立即返回或者丟擲異常,如果任務沒有完成,get將阻塞並直到任務完成.任務出現異常時,get將異常封裝後重新丟擲.

executor執行的任務有4個生命週期:建立,提交,開始,完成 已經完成和提交未開始的任務可以取消,正在進行中的任務,響應中斷才可以取消.

void renderpage(charsequence source)catch(interruptedexception e)catch(excutionexception e)

多執行緒 Callable與Future模式

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

多執行緒Future的用法

在併發程式設計時,一般使用runnable,然後扔給執行緒池完事,這種情況下不需要執行緒的結果。所以run的返回值是void型別。如果是乙個多執行緒協作程式,比如菲波拉切數列,1,1,2,3,5,8 使用多執行緒來計算。但後者需要前者的結果,就需要用callable介面了。callable用法和ru...

java多執行緒 Future 模式

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