协程生命周期
协程中的执行任务由job代表。其能控制协程的生命周期。job可以通过状态来反映协程的执行进程。
1. job的生命周期状态
new状态active状态completing状态completed状态canceling状态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
}