我可以在 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)方法来保持顺序,并对不同的行使用不同的方法。
我有一个用例,我需要调用数据库来检索 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)方法来保持顺序,并对不同的行使用不同的方法。