MST

星途 面试题库

面试题:Java CompletableFuture handle方法在复杂业务场景下的应用

假设你正在开发一个电商系统,需要异步调用库存查询服务、价格计算服务,然后综合两者结果返回给前端。如果其中某个服务调用失败,你要通过CompletableFuture的handle方法进行异常处理并返回合适的错误信息给前端,同时正常时要返回整合后的业务数据,请给出具体的Java代码实现。
20.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

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

public class EcommerceSystem {

    // 模拟库存查询服务
    public static CompletableFuture<Integer> queryStock() {
        return CompletableFuture.supplyAsync(() -> {
            // 实际业务逻辑,这里模拟返回库存数量
            return 100;
        });
    }

    // 模拟价格计算服务
    public static CompletableFuture<Double> calculatePrice() {
        return CompletableFuture.supplyAsync(() -> {
            // 实际业务逻辑,这里模拟返回价格
            return 99.99;
        });
    }

    public static CompletableFuture<String> process() {
        return queryStock()
               .thenCombine(calculatePrice(), (stock, price) -> {
                    // 整合库存和价格信息
                    return "库存数量: " + stock + ", 价格: " + price;
                })
               .handle((result, ex) -> {
                    if (ex != null) {
                        // 处理异常,返回错误信息
                        return "服务调用失败: " + ex.getMessage();
                    }
                    return result;
                });
    }

    public static void main(String[] args) {
        try {
            String response = process().get();
            System.out.println(response);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }
}