核心定位与用途:一句话概括
launch和async的根本不同。返回值对比:引出
Job和Deferred的本质区别。异常传播机制:这是高级面试中的核心考点,也是两者最关键的行为差异。
使用场景与最佳实践:结合Android开发的实际场景,说明何时该用哪个。
总结与升华:上升到“结构化并发”理念,体现对协程设计哲学的理解。
launch 和 async 是启动协程的两个最核心的构建器,它们的区别直接关系到协程的用途和行为。我的理解如下。
一、核心区别:launch 启动“火并忘”任务,async 启动“有结果”的任务
-
launch: 用于执行一段不需要返回具体结果的并发工作。-
类比:它就像是“发射一枚火箭”,你关心的是发射这个动作本身以及可能需要的控制(比如取消),但你并不指望火箭返回一个值给你。
-
返回值:它返回一个
Job对象。Job代表了协程的生命周期,它本身不携带计算结果,但你可以通过它来取消协程 (job.cancel()) 或等待其执行完毕 (job.join())。
-
-
async: 用于执行一段需要返回结果的并发工作。-
类比:它就像是“派出一支侦察队”,你明确地期望他们带回一个情报(结果)。
-
返回值:它返回一个
Deferred<T></
-

最低0.47元/天 解锁文章
1544

被折叠的 条评论
为什么被折叠?



