Skip to content

协程生命周期

协程中的执行任务由job代表。其能控制协程的生命周期。job可以通过状态来反映协程的执行进程。

1. job的生命周期状态

  1. new状态
  2. active状态
  3. completing状态
  4. completed状态
  5. canceling状态
  6. cancelled状态

协程转换示意图

txt
                                等待子协程
 +-----+ start  +--------+ complete      +-------------+  finish    +-----------+
 | 新建 | -----> | Active  | --------> | Completing      | -------> | 已完成     |
 +-----+        +--------+           +-------------+          +-----------+
                   |  取消 / 失败      |
                   |   +----------------+
                   |   |
                   V   V
             +------------+                          完成  +-----------+
             | 取消中    | --------------------------------> | 已取消     |
             +------------+                                   +-----------+
Kotlin
import kotlinx.coroutines.*

fun main() = runBlocking {
    val job = launch {
        // 协程体
        delay(1000)
        println("协程完成")
    }

    println("协程是否启动: ${job.isActive}") // true
    println("协程是否完成: ${job.isCompleted}") // false

    job.join() // 等待协程完成

    println("协程是否完成: ${job.isCompleted}") // true
    println("协程是否被取消: ${job.isCancelled}") // false
}

Released under the MIT License.