固定线程数线程池写法
// 取得核心数量
final int numberOfCores = Runtime.getRuntime().availableProcessors();
// 阻塞系数(计算型为0,IO 型为0~1)
final double blockingCoefficient = 0;
// 计算线程池大小
final int poolSize = (int) (numberOfCores / (1 - blockingCoefficient));
final List<Callable<String>> partitions = new ArrayList<Callable<String>>();
ExecutorService executorPool = Executors.newFixedThreadPool(poolSize);
// 此处循环添加任务
partitions.add(new Callable<String>(){
public String call() throws Exception {
// 业务处理
return "";
}
});
// 放入线程池
final List<Future<String>> futures=executorPool.invokeAll(partitions);
// 对运行结果进行处理
for(Future<String> future : futures){
String result=future.get();
}
// 关闭线程池
executorPool.shutdown();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步