//虚拟机线程最大数
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();
}
版权声明:本文为qq_42615006原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。