面试题答案
一键面试实现思路
- 在下单成功后,返回一个
CompletableFuture
对象,该对象代表异步操作的结果。 - 使用
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();
}
}