Skip to content
阅读进度

launch 和 async 的区别是什么?何时应该使用其中一个? ​

返回 Java 与并发 目录

标准回答 ​

launch 启动一项工作;async 启动一项需要返回结果的工作,之后用 await 等结果。

通俗例子 ​

加载头像和用户名可并行发起两个 async,再合并结果;只记录一次日志且不需要返回值时,用 launch 更直接。

深入解释 ​

**返回值有什么不同:**launch 返回 Job,用于等待结束或取消;async 返回 Deferred,除了生命周期还可通过 await 取得计算结果。await 通常挂起协程,而不是忙等占着线程。

**什么时候才是并行:**先启动两个独立 async,再分别 await,工作才有重叠的机会。创建一个就立即 await,再创建下一个,仍然是顺序执行;是否多核并行还取决于调度器。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。