CompletableFuture
是 Java 8 引入的一个类,用于支持异步编程和异步任务的处理。使用 CompletableFuture
可以方便地实现异步编排,以下是一个简单的示例,演示了如何使用 CompletableFuture
进行异步编排:
import java.util.concurrent.CompletableFuture;
public class AsyncExample {
public static void main(String[] args) {
// 第一个异步任务
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
// 模拟一个耗时的操作
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Result of Future 1";
});
// 第二个异步任务
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> {
// 模拟一个耗时的操作
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Result of Future 2";
});
// 使用thenCompose方法进行串行异步编排
future1.thenCompose(result1 -> future2.thenApply(result2 -> result1 + ", " + result2))
.thenAccept(finalResult -> System.out.println("Final result: " + finalResult));
// 阻塞主线程,等待异步任务完成
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在这个示例中,我们创建了两个异步任务 future1
和 future2
,然后使用 thenCompose
方法将它们串行起来,等待 future1
完成后再执行 future2
,并最终处理它们的结果。最后,我们使用 thenAccept
方法来处理最终的结果。
在实际应用中,你可以根据需要创建多个 CompletableFuture
对象,并使用 thenCompose
、thenCombine
、thenApply
等方法进行异步任务的编排和组合。