MST

星途 面试题库

面试题:Java 中 CompletableFuture 的 thenApply 方法的使用场景

请举例说明在哪些实际场景下会使用到 Java 中 CompletableFuture 的 thenApply 方法进行任务异步回调,并且编写一段简单代码展示其用法,代码需包含一个异步任务以及 thenApply 对结果的处理。
42.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

实际场景

  1. 电商系统:在查询商品信息时,可能需要从多个数据源(如数据库、缓存)获取数据,并且获取到商品基本信息后,需要对信息进行格式处理,如价格格式化等,这种场景可以使用 thenApply 方法,先异步获取数据,再异步处理数据。
  2. 图像处理:在从远程服务器下载图片后,需要对下载的图片数据进行格式转换、添加水印等处理。先异步下载图片,再异步对图片进行处理。

代码示例

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

public class CompletableFutureExample {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        CompletableFuture.supplyAsync(() -> {
            // 模拟异步任务,比如从数据库查询数据
            System.out.println("异步任务开始执行");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "任务执行结果";
        }).thenApply(result -> {
            // 对异步任务的结果进行处理
            System.out.println("开始处理任务结果");
            return "处理后的结果: " + result;
        }).thenAccept(System.out::println);

        // 主线程睡眠,保证异步任务有时间执行
        Thread.sleep(3000);
    }
}