//虚拟机线程最大数
int threadMax = Runtime.getRuntime().availableProcessors();
log.info("线程的数量为{}", threadMax);
//数据量
int dataCount = dataList.size();
//如果数据量小于线程数,不需要使用多线程
if (dataCount < threadMax) {
newChangebean(dataList);
} else {
//创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(threadMax);
List<Future<Integer>> futures = new ArrayList<>(threadMax);
for (int i = 0; i < threadMax; i++) {
//裁剪数据
List<Object> objects= formulaInfoVOS.subList(dataCount / threadMax * i, dataCount / threadMax * (i + 1));
//执行逻辑
Callable<Integer> task = () ->{
newChangebean(objects);
return null;
};
futures.add(executorService.submit(task));
}
//关闭线程池
executorService.shutdown();
}
Java用线程池创建多线程处理集合
最新推荐文章于 2024-01-25 11:30:12 发布