小天管理 发表于 2024年9月3日 发表于 2024年9月3日 代码逻辑如下: public void fun() { List<Integer> list = new ArrayList<>(); for(int i = 1; i <= 12345; i++) { list.add(i); } int total = list.size(); int batchSize = total / 3; List<List<Integer>> partition = Lists.partition(list, batchSize); for (List<Integer> itemList : partition) { executorService.execute(() -> subFun(itemList)); } } private void subFun(List<Integer> list) { String threadName = Thread.currentThread().getName(); log.info("子线程{}开始执行。。。", threadName); for (Integer i : list) { ..... } log.info("子线程{}执行总数:{}", threadName, list.size()); } 总结就是将数据分为 3 块,并行执行,最终的日志结果是,子线程有 3 个开始执行了,却只有 2 个执行完,日志里没有异常信息,方法里也没有 return 的逻辑,有大佬给点排查思路吗
已推荐帖子