【问题标题】:Asynchronous execution/operation with CompletableFuture in Java 8+Java 8+ 中 CompletableFuture 的异步执行/操作
【发布时间】:2021-10-12 12:58:47
【问题描述】:

在 Java 中,虽然 CompletableFuture 用于异步调用,但在循环 CompletableFuture 实例时调用 get() 方法是否与执行同步操作一样好?

【问题讨论】:

  • 它和同步操作一样糟糕

标签: java loops asynchronous parallel-processing completable-future


【解决方案1】:

'get()' 等到未来完成。如果那是你想要的,那就是你使用的。没有一般规则。

例如,您可能正在使用一种本质上是异步的方法,但在您的特定用途中,您需要等待它完成。如果是这样,那么等待它完成就没有错!

你提到了一个循环。您可能会发现它适用于启动循环中的所有任务,收集期货列表,然后(在循环外)等待它们全部完成。这样你就获得了一些并行性。

但作为一般规则:视情况而定。

【讨论】:

  • 感谢您的回答@iggy。我的意思是收集期货,然后在迭代期货时在每个期货上循环调用 get 方法。
  • 如果你的循环体包含someValue = doSomething().get(),那么你就是在顺序和同步地运行它们。
猜你喜欢
  • 1970-01-01
  • 2011-03-20
  • 2019-05-27
  • 2015-02-10
  • 2017-06-23
  • 1970-01-01
  • 2015-04-24
  • 2015-07-07
  • 2017-11-06
相关资源
最近更新 更多