未来完成链

时间:2020-04-14 15:58:38

标签: java java-8 completable-future

我正在寻找有关链接多个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的结果,则该基本标识将传递给第三个方法,该方法将在子表中插入一些数据。

如何使用JDK8 CompletableFutures进行链接。

1 个答案:

答案 0 :(得分:1)

使用thenCompose()方法之一,该方法可以使期货变平,就像Stream.flatMap()变平流一样:

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