Skip to content
阅读进度

如何理解协程是不是线程 suspend 会自动切后台吗? ​

返回 架构与 SDK 目录

标准回答 ​

协程是可挂起、可恢复的任务,不等于一个独立线程。suspend 表示函数允许在协程中挂起,不表示自动切换后台线程,也不保证内部操作不会阻塞。执行线程由调度器与当前上下文等决定。(协程基础)

机制解释 ​

Dispatchers.Main 常用于 UI,Default 用于 CPU 计算,IO 用于适合阻塞方式执行的 I/O。withContext 可切换执行上下文;delay 挂起协程而不占着线程睡眠,Thread.sleep 会阻塞当前线程。Retrofit 的异步挂起接口与自己写的同步文件读取要区别看待。

延伸追问 ​

两个 suspend 调用顺序写出来会并行吗?通常不会,仍是顺序执行。需要明确的并发结构,例如 coroutineScope 中启动 async,再 await;同时定义失败与取消策略。

内容来源 ​

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