无法通过Callable调用CompletableFuture的问题求助
无法通过Callable调用CompletableFuture的问题求助
大家好,我最近在做异步任务处理时碰到了难题,想请各位帮忙排查下问题。我写了三个实现Callable接口的类,分别用来获取订单ID、库存状态和支付结果,但尝试用CompletableFuture串联调用这些任务时,始终达不到预期的异步流程效果,实在搞不清哪里出错了。
先贴出我的代码给大家参考:
1. OrderFetcher类(获取订单ID)
public class OrderFetcher implements Callable<Integer> { @Override public Integer call() throws Exception { Thread.sleep(200); Random random = new Random(); return random.nextInt(10); } }
2. InventoryFetcher类(根据订单ID获取库存状态)
public class InventoryFetcher implements Callable<Boolean> { public InventoryFetcher(Integer orderId) { this.orderId = orderId; } Integer orderId; @Override public Boolean call() throws Exception { Thread.sleep(200); return this.orderId % 2 == 0 ? true : false; } }
3. PaymentFetcher类(根据库存状态获取支付结果)
public class PaymentFetcher implements Callable<String> { Boolean flag; public PaymentFetcher(Boolean flag) { this.flag = flag; } @Override public String call() throws Exception { Thread.sleep(200); return flag ? "支付成功" : "库存不足,支付失败"; } }
我的核心需求是实现这样的异步链式流程:
- 先异步执行
OrderFetcher获取订单ID - 拿到订单ID后,异步调用
InventoryFetcher获取库存状态 - 最后根据库存状态,异步调用
PaymentFetcher得到最终支付结果
但我尝试用CompletableFuture调用这些Callable时,既不知道怎么把前一个任务的结果正确传递给下一个任务,也不确定是不是调用方式本身就有问题。有没有大佬能指点下,应该如何用CompletableFuture整合这些Callable来实现预期的异步流程?
备注:内容来源于stack exchange,提问作者papun
相关产品推荐
相关产品推荐

