代码逻辑如下:
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 的逻辑,有大佬给点排查思路吗
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.