使用CompletableFuture.allOf实现异步执行同步搜集结果 /** * @author wjq * @create 2022-03-12 16:19 */ public class TestCompleteFuture { private static final int corePoolSize = 10; // 核心线程数 private static final int maximumPoolSize = 20; // 最大线程数 private static final long keepAliveTime = 60; // 存活时间 /** * 自定义线程池 */ private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, new ArrayBlockingQueue(100), new ThreadPoolExecutor.CallerRunsPolicy()); /** * 使用CompletableFuture完成多任务执行示例 * @param args */ public static void main(String[] args) { List<String> resultList = new ArrayList<>(); // CompletableFuture list List<CompletableFuture<?>> list = new ArrayList<>(); // 第一个任务 list.add(CompletableFuture.runAsync(() -> { // TODO: 具体的任务执行... resultList.add("第一个任务的执行结果"); }, executor)); // 第二个任务 list.add(CompletableFuture.runAsync(() -> { // TODO: 具体的任务执行... resultList.add("第二个任务的执行结果"); }, executor)); // 第三个任务 list.add(CompletableFuture.runAsync(() -> { // TODO: 具体的任务执行... resultList.add("第三个任务的执行结果"); }, executor)); // 第四个任务 list.add(CompletableFuture.runAsync(() -> { // TODO: 具体的任务执行... resultList.add("第四个任务的执行结果"); }, executor)); // 待等所有任务执行完成 CompletableFuture.allOf(list.toArray(new CompletableFuture[0])).join(); System.out.println(resultList); } }
标签:示例,list,任务,resultList,add,CompletableFuture,new,多线程,java8 From: https://www.cnblogs.com/wjqhuaxia/p/17509865.html