int size = list.size();
List<FlashCardRecordDTO> resultList = new ArrayList<>();
ExecutorService executorService = newFixedThreadPool(nThreads);
List<Future<List<FlashCardRecordDTO>>> futures = new ArrayList<>(nThreads);
//进行数据的拆分
for (int i = 0; i < 30; i++) {
final List<String> subList = list.subList(size / 30 * i, size / 30 * (i + 1));
Callable<List<FlashCardRecordDTO>> task = () -> {
//存当前线程处理的数据,最后统一汇总打印
return getRecordByStudentId(subList, param);
};
futures.add(executorService.submit(task));
}
// 汇总处理的结果
try {
for (Future<List<FlashCardRecordDTO>> future : futures) {
resultList.addAll(future.get());
}
} catch (Exception e) {
e.printStackTrace();
}finally {
executorService.shutdown();
}
return resultList;
多线程处理集合
最新推荐文章于 2024-07-13 13:55:40 发布