外观
Java 开发者怎样理解 Kotlin 协程?
标准回答
协程是可挂起、可恢复的任务。挂起函数等待结果时可以让出线程;调度器决定任务在哪类线程执行;结构化并发把子任务的生命周期绑定在作用域内。
关键机制
- suspend 只表示函数可以挂起,不表示函数自动切到 IO 线程;阻塞调用仍需显式放入合适的调度器。
- launch 返回 Job,async 返回 Deferred;多个 async 可以并发执行,再 await 获取结果。
- 取消是协作式的:挂起点或主动检查取消才会响应。不要吞掉 CancellationException,也要关闭底层请求和资源。
通俗例子
页面请求设备列表,用 viewModelScope 管理任务;阻塞磁盘读取放 Dispatchers.IO;页面观察状态时通过 repeatOnLifecycle 控制收集时机。
易混淆点
取消作用域不保证任意第三方阻塞操作立即停止;仍需底层 API 的取消或超时能力。
参考资料
内容来源
- Android 技术札记 · 原条目
kotlin