Kotlin 协程基础 02:挂起函数 (Suspending Functions)

本篇文档解析 example-basic-02.kt,探讨协程中最核心的代码组织单位:挂起函数。

1. 什么是挂起函数?

挂起函数是使用 suspend 关键字修饰的函数。它是协程的逻辑单元。

特性:

  • 非阻塞:挂起函数在执行到某些异步操作(如 delay)时,会释放当前线程,让线程去处理其他任务。
  • 可恢复:当异步操作完成后,挂起函数会从刚才暂停的地方恢复执行。
  • 调用限制:挂起函数只能在协程或其他挂起函数中调用。

2. 代码解析

1
2
3
4
5
6
7
8
9
10
fun main() = runBlocking { 
launch { doWorld() }
println("Hello")
}

// 这是一个挂起函数
suspend fun doWorld() {
delay(1000L)
println("World!")
}
  • 提炼逻辑doWorld() 将原来直接写在 launch 里的逻辑提取了出来。
  • 代码整洁:通过挂起函数,我们可以像写同步代码一样组织复杂的异步逻辑,避免了传统嵌套回调(Callback Hell)。

3. 开发者感悟

suspend 关键字是一个信号,它告诉编译器:“这个函数可能会挂起当前协程”。它并不代表这个函数会自动在后台运行,它只是允许该函数内部调用其他的挂起函数。这是协程实现“顺序编写异步代码”的基础。

,