我可以在 CompletableFuture runAsync 中进行数据库调用吗?

Can I make a database call within CompletableFuture runAsync?

我有一个用例,我需要调用数据库来检索 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 行之后按顺序执行?有什么我需要注意的问题吗?

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

runAsync 应用于整个 Runnable,而不应用于个别行。

如果多次调用 runAsync,您将失去订购保证。

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