【问题标题】:both launch and async running in parallel?启动和异步并行运行?
【发布时间】:2021-04-02 12:31:43
【问题描述】:

我已经多次尝试使用协程(启动和异步)。它们都并行运行,但为什么很多人说启动不是? 在这个例子中,我使用了 3 个协程,每个协程都有 1 秒的延迟。

这是异步的。完成需要 1 秒。

DefaultDispatcher-worker-3 is running
DefaultDispatcher-worker-3 is running
DefaultDispatcher-worker-3 is running
async1 finished
async2 finished
async3 finished
1109 ms

这是发射。完成也需要 1 秒。

DefaultDispatcher-worker-2 is running
DefaultDispatcher-worker-2 is running
DefaultDispatcher-worker-2 is running
launch1 finished
launch2 finished
launch3 finished
1102 ms

【问题讨论】:

  • launchasync 本质上是一样的,但是后者返回结果,在异常处理方面存在一些差异。
  • @Pawel 谢谢,我会详细了解的。

标签: android kotlin coroutine


【解决方案1】:

同时使用launchasync 可以并行运行任务。不同之处在于launch 返回一个Job,而async 给你一个Deferred,它实际上是一个Job 的结果。

因此,如果您希望使用两个任务的结果,launch 不是一个好的选择。

【讨论】:

  • 感谢您的建议。我会更多地了解它,非常感谢
猜你喜欢
  • 2016-12-02
  • 2015-08-10
  • 2017-05-12
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多