MST

星途 面试题库

面试题:Java中CompletableFuture异步任务结果传递:如何将一个CompletableFuture的结果传递给另一个异步任务并处理

在Java中,给定一个已经完成计算的CompletableFuture<Integer> future1,它返回一个整数结果。现在需要启动另一个异步任务,该任务接收future1的结果,并将其乘以2后返回。请使用CompletableFuture的相关方法实现这个功能,并解释你所使用方法的作用。
37.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.concurrent.CompletableFuture;

public class CompletableFutureExample {
    public static void main(String[] args) {
        // 模拟已经完成计算的CompletableFuture
        CompletableFuture<Integer> future1 = CompletableFuture.completedFuture(5);

        CompletableFuture<Integer> future2 = future1.thenApplyAsync(result -> result * 2);

        future2.thenAccept(System.out::println).join();
    }
}
  1. thenApplyAsync方法
    • 作用:thenApplyAsync方法接收一个Function作为参数,该Function会在CompletableFuture完成时被调用。它会使用默认的ForkJoinPool.commonPool()线程池来异步执行这个Function。在这个例子中,Functionfuture1的结果乘以2,并返回一个新的CompletableFuture,这个新的CompletableFutureFunction执行完毕后完成,其结果就是Function的返回值。
  2. thenAccept方法
    • 作用:thenAccept方法接收一个Consumer作为参数,当CompletableFuture完成时,会调用这个Consumer。这里使用System.out::println作为Consumer,将future2的结果打印出来。join方法用于等待CompletableFuture完成并获取结果,在这里保证thenAccept中的操作执行完毕。