MST

星途 面试题库

面试题:Java中CompletableFuture thenAccept在电商订单处理中的应用

假设你正在开发一个电商系统,当用户下单成功后,需要记录订单日志。请使用CompletableFuture的thenAccept方法实现该功能,描述具体的实现思路并给出核心代码片段。
30.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 在下单成功后,返回一个CompletableFuture对象,该对象代表异步操作的结果。
  2. 使用thenAccept方法,它接收一个消费者函数作为参数,当CompletableFuture完成时,会执行这个消费者函数,在这个函数中记录订单日志。

核心代码片段

import java.util.concurrent.CompletableFuture;

public class OrderService {

    public CompletableFuture<Void> placeOrder(Order order) {
        // 模拟下单操作,返回一个CompletableFuture
        return CompletableFuture.supplyAsync(() -> {
            // 下单逻辑,比如保存订单到数据库等
            System.out.println("下单成功: " + order);
            return order;
        }).thenAccept(this::logOrder);
    }

    private void logOrder(Order order) {
        // 记录订单日志的逻辑
        System.out.println("记录订单日志: " + order);
    }
}

class Order {
    // 订单相关属性
    private String orderId;
    private String product;

    public Order(String orderId, String product) {
        this.orderId = orderId;
        this.product = product;
    }

    @Override
    public String toString() {
        return "Order{" +
                "orderId='" + orderId + '\'' +
                ", product='" + product + '\'' +
                '}';
    }
}

使用示例:

public class Main {
    public static void main(String[] args) {
        OrderService orderService = new OrderService();
        Order order = new Order("123", "手机");
        orderService.placeOrder(order).thenRun(() -> System.out.println("订单处理完毕")).join();
    }
}