kotlin: 协程: runBlocking 只会等待自己子协程执行结束
一,runBlocking中运行子协程
代码:
//处理按钮点击事件
binding.button4.setOnClickListener {
runBlocking {
println("main start") // 1
val job = launch { // TODO 协程
println("launch 1 start") // 2
delay(1000L) // 延迟1
println("launch 1 end") // 3
}
println("main mid") // 4
launch(context = job) { // TODO 子协程
println("launch 2 start") // 5
delay(2000L) // 延迟2
println("launch 2 end") // 6
}
println("main end") // 7
}
println("runBlocking运行结束");
}
运行结果:
二,runBlocking中运行非子协程
代码:
//处理按钮点击事件
binding.button5.setOnClickListener {
runBlocking {
println("main start") // 1
val job = GlobalScope.launch { // TODO 全局协程
println("launch 1 start") // 2
delay(1000L) // 延迟1
println("launch 1 end") // 3
}
println("main mid") // 4
launch(context = job) { // TODO 子协程
println("launch 2 start") // 5
delay(2000L) // 延迟2
println("launch 2 end") // 6
}
println("main end") // 7
}
println("runBlocking运行结束");
}
运行结果: