【发布时间】:2021-10-12 12:58:47
【问题描述】:
在 Java 中,虽然 CompletableFuture 用于异步调用,但在循环 CompletableFuture 实例时调用 get() 方法是否与执行同步操作一样好?
【问题讨论】:
-
它和同步操作一样糟糕。
标签: java loops asynchronous parallel-processing completable-future
在 Java 中,虽然 CompletableFuture 用于异步调用,但在循环 CompletableFuture 实例时调用 get() 方法是否与执行同步操作一样好?
【问题讨论】:
标签: java loops asynchronous parallel-processing completable-future
'get()' 等到未来完成。如果那是你想要的,那就是你使用的。没有一般规则。
例如,您可能正在使用一种本质上是异步的方法,但在您的特定用途中,您需要等待它完成。如果是这样,那么等待它完成就没有错!
你提到了一个循环。您可能会发现它适用于启动循环中的所有任务,收集期货列表,然后(在循环外)等待它们全部完成。这样你就获得了一些并行性。
但作为一般规则:视情况而定。
【讨论】:
someValue = doSomething().get(),那么你就是在顺序和同步地运行它们。