使用CompletableFuture实现多线程分批异步处理数据

List<CompletableFuture<Void>> futureList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
    futureList.add(CompletableFuture.runAsync(() -> {
        System.out.println("Thread id=" + Thread.currentThread().getId());
    }, ThreadPools.commonExecutor));
}
//等待所有任务完成
CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0])).join();

自行修改for循环的对象,以及runAsync方法的具体处理逻辑。

注意
ThreadPools.commonExecutor是自定义的线程池,也可以不传这个参数,但是建议传,具体原因见:CompletableFuture使用之双核以下CPU要自定义线程池
ThreadPools工具类见:线程池通用管理类ThreadPools


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍