CompletableFuture是Java 8引入的一个类,它实现了Future接口,并提供了更强大和灵活的异步编程功能。与ExecutorService和Callable一样,CompletableFuture也用于处理异步任务的执行和管理。
CompletableFuture可以让你以非阻塞的方式处理异步操作的结果。你可以将多个CompletableFuture链接在一起,形成一个任务流水线,其中每个任务都依赖前一个任务的结果。这种链式调用的方式使得异步编程变得更加直观和易于理解。
CompletableFuture提供了丰富的方法来处理异步任务的完成、异常和组合等情况。你可以使用thenApply()、thenAccept()、thenRun()等方法来对任务的结果进行处理,还可以使用handle()、exceptionally()等方法来处理任务的异常情况。此外,CompletableFuture还支持并行执行任务和等待所有任务完成的操作。
下面是一个简单的示例代码,演示了如何使用CompletableFuture来执行异步任务并获取结果:
import java.util.concurrent.CompletableFuture;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建一个CompletableFuture对象,表示一个异步任务
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello");
// 在任务完成后对结果进行处理
CompletableFuture<String> processedFuture = future.thenApply(result -> result + " World");
// 阻塞等待任务完成并获取结果
String result = processedFuture.join();
System.out.println(result); // 输出: Hello World
}
}
在这个示例中,我们首先使用CompletableFuture.supplyAsync()方法创建了一个异步任务,该任务会返回字符串"Hello"。然后,我们使用thenApply()方法对任务的结果进行处理,在结果后面添加了字符串"World"。最后,我们使用join()方法等待任务完成并获取最终的结果。