协程速通 · Android

2. 协程是什么

协程不是线程,而是运行在线程之上的任务。关键区别:

对比线程 Thread协程 Coroutine
调度操作系统内核用户态(Kotlin 编译器状态机)
阻塞阻塞整个线程挂起,线程可去干别的
开销MB 级栈、昂贵几乎零成本、可海量创建
取消粗暴且不可靠协作式 cancel()

「挂起」(suspend) 的含义:协程在某处让出线程,等结果好了再在合适的线程上恢复继续执行。对写代码的人来说,它看起来就是顺序执行的。

Kotlin 协程速通 · Android 开发 · 内容基于 kotlinx.coroutines 1.7+