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线程结束

 

posted @ 2025-07-19 07:47  刘宏缔的架构森林  阅读(31)  评论(0)    收藏  举报