Skip to content

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()方法等待任务完成并获取最终的结果。