【问题标题】:CompletableFuture chainingCompletableFuture 链接
【发布时间】:2020-04-14 15:58:38
【问题描述】:

我正在寻找有关链接多个 CompletableFutures 方法的建议。

假设我需要进行 3 次操作。

  1. 搜索表单主表
  2. 如果主表中不存在的数据插入到主表中
  3. 主表主键将用于向子表插入一些数据。

假设我的方法是这样的:

public static CompletableFuture<Long> searchMaster() {
    return CompletableFuture.supplyAsync (() -> 100L);
}

public static CompletableFuture<Long> insertIntoMaster() {
    return CompletableFuture.supplyAsync (() -> 200L);
}

public static CompletableFuture<Long> insertIntoChildDB() {
    return CompletableFuture.supplyAsync (() -> 300L);
}

现在我的要求是:

第一个方法返回一个 id。 我会将该 id 传递给第二种方法。 第二个方法的成功结果会返回一个 CompletableFuture,这个 primaryid 将被传递给第三个方法,第三个方法会在子表中插入一些数据。

如何使用 JDK8 CompletableFutures 进行链接。

【问题讨论】:

    标签: java java-8 completable-future


    【解决方案1】:

    使用thenCompose() 方法之一,它可以像Stream.flatMap() 扁平化流一样扁平化期货:

    CompletableFuture<Long> future = searchMaster()
        .thenCompose(id -> insertIntoMaster(id))
        .thenCompose(primaryId -> insertIntoChildDB(primaryId));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多