Java 使用 CompletableFuture.allOf 等待多个异步任务完成
"使用 CompletableFuture 的静态方法 allOf 来等待所有异步方法执行完毕。\n\n首先,你需要将所有异步方法返回的 future 添加到一个 list 集合中:\n\njava\nList<CompletableFuture<Void>> futures = new ArrayList<>();\nwhile (condition) {\n CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {\n // 异步执行的方法\n return null;\n });\n futures.add(future);\n}\n\n\n然后,可以使用 CompletableFuture.allOf 方法等待所有 future 执行完毕:\n\njava\nCompletableFuture<Void> allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));\n\n\n最后,可以使用 allFutures 的 get 方法阻塞等待所有异步方法执行完毕:\n\njava\nallFutures.get();\n\n\n完整示例代码如下:\n\njava\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\nimport java.util.concurrent.ExecutionException;\n\npublic class Main {\n public static void main(String[] args) throws ExecutionException, InterruptedException {\n List<CompletableFuture<Void>> futures = new ArrayList<>();\n while (condition) {\n CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {\n // 异步执行的方法\n return null;\n });\n futures.add(future);\n }\n\n CompletableFuture<Void> allFutures = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));\n allFutures.get();\n\n // 所有异步方法执行完毕后的后续操作\n }\n}\n\n\n注意,以上示例中使用的 CompletableFuture 的泛型为 Void,因为异步方法不需要返回值。如果异步方法有返回值,可以根据实际情况修改泛型类型。\n
原文地址: https://www.cveoy.top/t/topic/qpNI 著作权归作者所有。请勿转载和采集!