本篇解析 example-compose-03.kt。探讨如何延迟启动一个并发任务。
1. 核心概念:惰性启动
在 async 中,通过设置 start = CoroutineStart.LAZY,协程在调用时不会立即启动。
启动方式:
- **await()**:如果直接调用
await(),协程会开始运行并挂起等待结果(这会导致任务变成顺序执行)。 - **start()**:在
await()之前手动调用start(),可以实现并发启动。
2. 代码解析
1 | val one = async(start = CoroutineStart.LAZY) { doSomethingUsefulOne() } |
3. 开发者感悟
LAZY 模式就像是“按需加载”。它可以让你先定义好复杂的并发逻辑,在真正需要的地方才一键启动。但要小心,如果不先调用 start() 就直接 await(),你的多个任务就会变成串行,从而失去并发的优势。