kotlin:协程:已结束或已取消的协程作为父协程时不会被执行

一,已结束协程作父协程

代码:

        //处理按钮点击事件
        binding.button1.setOnClickListener {
            runBlocking {
                println("main start") // 1

                val job = launch {     // 协程1
                    println("launch 1 start") // 2
                    delay(1000L)  // TODO 延时1
                    println("launch 1 end")  // 3
                }

                println("main mid")  // 4
                job.join()
                println("job isActive:"+job.isActive)
                println("job isCancelled:"+job.isCancelled)
                println("job isCompleted:"+job.isCompleted)
                val job2 = launch(job) {   // 协程2
                    println("launch 2 start") //5
                    delay(1000L) // TODO 延时2
                    println("launch 2 end") //6
                }
                delay(1500) // TODO 延时3
                println("main end") // 7
            }
        }

运行结果:

image

二,已取消协程作父协程

代码:

        //处理按钮点击事件
        binding.button3.setOnClickListener {
            runBlocking {
                println("main start") // 1

                val job = launch {     // 协程1
                    println("launch 1 start") // 2
                    delay(1000L)  // TODO 延时1
                    println("launch 1 end")  // 3
                }

                val job2 = launch(job) {   // 协程2
                    println("launch 2 start") //5
                    delay(1000L) // TODO 延时2
                    println("launch 2 end") //6
                }

                delay(100) // TODO 延时3
                job.cancel()
                println("job isActive:"+job.isActive)
                println("job isCancelled:"+job.isCancelled)
                println("job isCompleted:"+job.isCompleted)
                val job3 = launch(job) {   // 协程2
                    println("launch 3 start") //8
                    delay(1000L) // TODO 延时2
                    println("launch 3 end") //9
                }
                println("main end") // 7
            }
        }

运行结果:

image

 

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