kotlin: 调试模式查看线程和协程信息
一,代码:
binding.button1.setOnClickListener {
System.setProperty("kotlinx.coroutines.debug", "on")
println("main线程开始:${Thread.currentThread().name}")
runBlocking() {
println("runBlocking协程开始:${Thread.currentThread().name}")
launch { // 协程 A
delay(1000)
println("协程A 执行完成 ${Thread.currentThread().name}")
}
launch() { // 协程 B
delay(500)
println("协程B 执行完成 ${Thread.currentThread().name}")
}
}
println("runBlocking协程结束")
println("main线程结束")
}
说明:
下面这行代码启动协程的调试模式,它可以打印出协程的编号
System.setProperty("kotlinx.coroutines.debug", "on")
二,测试效果:
I main线程开始:main
I runBlocking协程开始:main @coroutine#4
I 协程B 执行完成 main @coroutine#6
I 协程A 执行完成 main @coroutine#5
I runBlocking协程结束
I main线程结束
可以看到:从runBlocking中才启动了协程
在之前用的都是线程
如果我们注释掉打开协程调试模式那行代码,则不会打印协程的编号:
输出如下:
I main线程开始:main
I runBlocking协程开始:main
I 协程B 执行完成 main
I 协程A 执行完成 main
I runBlocking协程结束
I main线程结束