@Slf4j
public class Demo24 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
list.add("第" + i + "个");
}
int nThreads = 5;
int size = list.size();
ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
ArrayList<Future<Integer>> futures = new ArrayList<>(nThreads);
for (int i = 0; i < nThreads; i++) {
List<String> list1 = list.subList(size / nThreads * i, size / nThreads * (i + 1));
int finalI = i + 1;
Callable<Integer> task1 = () -> {
for (String str : list1) {
log.info("线程{}正在处理{}", finalI, str);
}
return 1;
};
futures.add(executorService.submit(task1));
}
executorService.shutdown();
if (!futures.isEmpty() && futures != null){
log.info("end");
}
}
}
Java使用线程池对list进行分组处理
最新推荐文章于 2024-09-18 17:39:05 发布