协程进阶:组合 02. async 异步并发

本篇解析 example-compose-02.kt。学习如何让不相干的任务并行运行.

1. 核心操作符:async

asynclaunch 类似,都会启动一个新的协程。

关键区别:

  • 返回值async 返回一个 Deferred<T>,它代表一个未来的结果。
  • 获取结果:通过 await() 挂起并等待结果。
  • 并发性:在 await() 之前启动多个 async,它们会并发执行

2. 代码解析

1
2
3
4
5
6
val time = measureTimeMillis {
val one = async { doSomethingUsefulOne() }
val two = async { doSomethingUsefulTwo() }
println("The answer is ${one.await() + two.await()}")
}
// 结果:Completed in 1000+ ms
  • 对比顺序执行:时间从 2000ms 减少到了 1000ms。

3. 开发者感悟

async 是协程中处理并发的核心手段。在 Android 中,如果你需要同时请求用户信息和通知列表,请务必使用 async 并行处理。只有当你真正需要结果时,才调用 await()

,