kotlin: yield()的用途例子:保证 job 任务能够得到执行

一,例子:

代码:

        //处理按钮点击事件
        binding.button1.setOnClickListener {
            runBlocking {
                val job = launch {
                    try {
                        println("try start")
                        delay(1000)
                        println("try end")
                    } finally {
                        println("finally start")
                        delay(1000)
                        println("finally end")
                    }
                }
                yield()
                job.cancelAndJoin()
            }
        }

运行结果:

image

二,对比取消yield的结果:

代码:注释掉了yield(),此时job得不到执行,所以运行结果为空,什么都没有打印出来

        //处理按钮点击事件
        binding.button2.setOnClickListener {
            runBlocking {
                val job = launch {
                    try {
                        println("try start")
                        delay(1000)
                        println("try end")
                    } finally {
                        println("finally start")
                        delay(1000)
                        println("finally end")
                    }
                }
                //yield()
                job.cancelAndJoin()
            }
        }

 

posted @ 2025-08-09 13:41  刘宏缔的架构森林  阅读(12)  评论(0)    收藏  举报