Skip to content
阅读进度

Java 开发者怎样理解 Kotlin 协程? ​

返回 Java 与并发 目录

标准回答 ​

协程是可挂起、可恢复的任务。挂起函数等待结果时可以让出线程;调度器决定任务在哪类线程执行;结构化并发把子任务的生命周期绑定在作用域内。

关键机制 ​

  • suspend 只表示函数可以挂起,不表示函数自动切到 IO 线程;阻塞调用仍需显式放入合适的调度器。
  • launch 返回 Job,async 返回 Deferred;多个 async 可以并发执行,再 await 获取结果。
  • 取消是协作式的:挂起点或主动检查取消才会响应。不要吞掉 CancellationException,也要关闭底层请求和资源。

通俗例子 ​

页面请求设备列表,用 viewModelScope 管理任务;阻塞磁盘读取放 Dispatchers.IO;页面观察状态时通过 repeatOnLifecycle 控制收集时机。

易混淆点 ​

取消作用域不保证任意第三方阻塞操作立即停止;仍需底层 API 的取消或超时能力。

参考资料 ​

内容来源 ​

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