MST

星途 面试题库

面试题:Java中CompletableFuture如何实现并行计算基础问题

在Java中,使用CompletableFuture实现并行计算时,如何创建一个异步任务并获取其执行结果?请给出代码示例,并解释关键步骤。
13.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

代码示例

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class CompletableFutureExample {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 创建一个异步任务
        CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
            // 模拟耗时操作
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return 42;
        });

        // 获取异步任务的执行结果
        Integer result = future.get();
        System.out.println("异步任务执行结果: " + result);
    }
}

关键步骤解释

  1. 创建异步任务
    • 使用CompletableFuture.supplyAsync方法创建一个异步任务。该方法接受一个Supplier作为参数,在Supplierget方法中编写需要异步执行的代码逻辑。这里通过() -> {... }的Lambda表达式定义了一个Supplier,在其中模拟了一个耗时2秒的操作,并返回结果42
  2. 获取执行结果
    • 使用future.get()方法来获取异步任务的执行结果。这个方法会阻塞当前线程,直到异步任务执行完成并返回结果。如果异步任务执行过程中抛出异常,get()方法会将该异常包装成ExecutionExceptionInterruptedException重新抛出,所以在使用get()方法时需要处理这两种异常。

此外,CompletableFuture还提供了许多其他方法来处理异步任务的结果、链式调用、异常处理等,以满足更复杂的异步编程需求。