CompletableFuture异步处理多个任务并获取返回值
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建两个异步任务
CompletableFuture<String> futureTask1 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(1000); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Task1 Result";
});
CompletableFuture<String> futureTask2 = CompletableFuture.supplyAsync(() -> {
try {
Thread.sleep(1000); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Task2 Result";
});
// 等待所有任务完成,并获取结果
CompletableFuture<Void> combinedFuture =
CompletableFuture.allOf(futureTask1, futureTask2);
// 当所有任务完成时,打印结果
combinedFuture.thenRun(() -> {
try {
System.out.println("Task1 Result: " + futureTask1.get());
System.out.println("Task2 Result: " + futureTask2.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
});
}
}
这段代码创建了两个异步任务,并且使用CompletableFuture.allOf
来确保两个任务都完成后,才执行thenRun
内的代码块来打印每个任务的结果。这是一个简单的例子,展示了如何使用CompletableFuture
来处理多个异步任务并等待它们完成。
评论已关闭