You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 06:58:01