多執行緒Callable處理資料

2022-06-10 19:15:14 字數 2129 閱讀 3862

1.定義乙個等於cpu核心數的執行緒池

2.根據資料 list 處理每個執行緒可以分到的數量list

3.callable 執行緒處理資料

4.future 獲取callcable執行緒處理後的資料

5.把 future 獲取的資料重新 addall 進 list

6.返回資料

public listpackagestrings(listlist) throws

interruptedexception, executionexception

//建立乙個大小等於cpu核心數的執行緒池

executorservice exec =executors.newfixedthreadpool(threadnum);

try

else

//確定每條執行緒的資料

listcutlist = list.sublist(i *count, end);

final listliststr =cutlist;

final listnewlist = new arraylist();

callable

> task = new callable>()

return

newlist;}};

//這裡提交的任務容器列表和返回的future列表存在順序對應的關係

tasks.add(task);

}//獲取資料並重新set

list>> results =exec.invokeall(tasks);

list.clear();

for (future>future : results)

} finally

system.err.println("\n執行任務消耗了 :" + (system.currenttimemillis() - start) + "毫秒");

return

list;

}

1.定義乙個等於cpu核心數的執行緒池池

2.定義 callable 的任務集合

3.遍歷list處理資料

4.把 callable 新增到 callable 的任務集合中

5.把通過 future 獲取的資料並重新 add 進 list

6.返回資料

public listcallablepackagestrings(listlist) throws

interruptedexception, executionexception

};//這裡提交的任務容器列表和返回的future列表存在順序對應的關係

tasks.add(task);

}list

> results =exec.invokeall(tasks);

list.clear();

for (futurefuture : results)

} finally

system.err.println("\n執行任務消耗了 :" + (system.currenttimemillis() - start) + "毫秒");

return

list;

}

1.定義乙個等於cpu核心數的執行緒池

2.定義future的任務集合

3.遍歷list處理資料

4.把 future 新增到 future 的任務集合中

5.把通過 future 獲取的資料並重新 add 進 list

6.返回資料

public listpackagestrings(listlist) throws

interruptedexception, executionexception

});futures.add(future);

}list.clear();

for (futurefuture : futures)

} finally

system.err.println("\n執行任務消耗了 :" + (system.currenttimemillis() - start) + "毫秒");

return

list;

}

第二種是在第一種基礎上進行優化

第三種是在第二種基礎上進行冗餘**去除

多執行緒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物件 並傳入第一步編寫的...