【问题标题】:Can I make a database call within CompletableFuture runAsync?我可以在 CompletableFuture runAsync 中进行数据库调用吗?
【发布时间】:2021-01-13 22:58:27
【问题描述】:

我有一个用例,我需要调用数据库来检索runAsync() 中的一些数据。我有以下方法:

return CompletableFuture.runAsync(() -> {
        // Line 1
        // Line 2 - fetch from database
        // Line 3 - use the retrieved value to set field on an object
    })

我的问题是 - 第 3 行是否保证在第 2 行之后依次执行?有什么我需要注意的问题吗?

【问题讨论】:

    标签: java completable-future


    【解决方案1】:

    Runnable 中的三行将依次执行,1 然后 2 然后 3。

    runAsync 适用于整个 Runnable,而不是单个行。

    如果您多次致电runAsync,您将失去订购保证。

    您可以使用thenApply(以及相关的thenXxxx)方法来保持顺序,并为不同的行使用不同的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2018-06-13
      相关资源
      最近更新 更多