面试题答案
一键面试适用场景
thenCompose
方法通常用于需要将两个异步任务进行链式组合,其中第二个任务的输入依赖于第一个任务的输出的场景。这种场景下,使用 thenCompose
可以避免回调地狱,使异步代码更加清晰和易于维护。
代码示例
import java.util.concurrent.CompletableFuture;
public class CompletableFutureExample {
public static void main(String[] args) {
CompletableFuture.supplyAsync(() -> "Hello")
.thenCompose(s -> processString(s))
.thenAccept(System.out::println)
.join();
}
private static CompletableFuture<Integer> processString(String input) {
return CompletableFuture.supplyAsync(() -> input.length());
}
}
在上述代码中:
CompletableFuture.supplyAsync(() -> "Hello")
创建并异步执行第一个任务,该任务返回字符串"Hello"
。thenCompose(s -> processString(s))
将第一个任务的结果作为参数传递给processString
方法,processString
方法返回一个新的CompletableFuture
,该CompletableFuture
异步计算字符串的长度。thenAccept(System.out::println)
处理最终结果并打印。join()
等待整个异步操作链完成。