多執行緒 Callable 使用,及非同步返回

2021-09-25 12:22:31 字數 878 閱讀 7120

//資料集合

// 建立乙個大小為10的執行緒池

executorservice executorservice = executors.newfixedthreadpool(10);

//futuretask 結果返回集合,用於儲存非同步返回結果

list> futuretasklist = new arraylist<>();

streamstream = page.stream();

stream.foreach(tmp -> );

//關閉連線池

executorservice.shutdown();

//非同步獲取執行結果

for(futuretaskfuturetask: futuretasklist )catch (exception e)

}

這樣任務的執行是並行執行,獲取結果是阻塞式獲取,則服務執行的最長時間是最後執行完結果返回的時間,如果其中乙個執行緒執行完成需要花費10s,但是其餘99個執行緒在1s就已經執行完成,則獲取主線程阻塞的時間是10s,如果更巧的是那個花費10s的執行緒剛好放在list的第一位,則其餘99個執行緒的結果也需要在第10s之後才能夠獲取到,顯然這存在一定的優化空間。

searchthread 類 實現callable

@slf4j

public class searchthread implements callable

@override

public jsonobject call() throws exception catch (exception e)finally

return json;

}}

多執行緒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...

多執行緒 Callable執行緒建立方式

介面定義 callable介面 public inte ce callable runnable介面 public inte ce runnable 編寫類實現callable介面 實現call方法 class implements callable 建立futuretask物件 並傳入第一步編寫的...