package lambdasinaction.chap7; import lombok.Builder; import lombok.Data; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Data @Builder public class AsyncMultipleTasks { private String key; private String value; private static String getinfo(AsyncMultipleTasks asyncMultipleTasks){ asyncMultipleTasks.setValue(asyncMultipleTasks.getValue()+"----------"); return asyncMultipleTasks.toString(); } private static String getinfo1(AsyncMultipleTasks asyncMultipleTasks){ asyncMultipleTasks.setValue(asyncMultipleTasks.getValue()+"+++++++++"); return asyncMultipleTasks.toString(); } public static void main(String[] args) { // 创建一个线程池,用于执行异步任务 ExecutorService executor = Executors.newFixedThreadPool(5); // 创建5个CompletableFuture对象,每个代表一个异步任务 CompletableFuture<String> task1 = CompletableFuture.supplyAsync(() -> { return getinfo(new AsyncMultipleTasks("111","222")) ; }, executor); CompletableFuture<String> task2 = CompletableFuture.supplyAsync(() -> { return getinfo1(new AsyncMultipleTasks("111","2222222")) ; }, executor); CompletableFuture<String> task3 = CompletableFuture.supplyAsync(() -> { return "Task 3 completed"; }, executor); CompletableFuture<String> task4 = CompletableFuture.supplyAsync(() -> { return getinfo1(new AsyncMultipleTasks("111","2222222")) ; }, executor); CompletableFuture<String> task5 = CompletableFuture.supplyAsync(() -> { return "Task 5 completed"; }, executor); // 等待所有任务完成 CompletableFuture<Void> allTasks = CompletableFuture.allOf(task1, task2, task3, task4, task5); // 所有任务完成后的处理 allTasks.thenRun(() -> { try { // 获取每个任务的结果 String result1 = task1.get(); String result2 = task2.get(); String result3 = task3.get(); String result4 = task4.get(); String result5 = task5.get(); // 输出结果 System.out.println(result1); System.out.println(result2); System.out.println(result3); System.out.println(result4); System.out.println(result5); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } finally { // 关闭线程池 executor.shutdown(); } }); } }
jackMao的异步调用
最新推荐文章于 2024-05-21 22:13:42 发布