kotlin: job.join()会等待当前协程执行结束

一,代码:

        //处理按钮点击事件
        binding.button1.setOnClickListener {
            runBlocking {
                suspend fun download() {
                    // 模拟下载任务
                    delay(1000L)
                }
                println("得到job")
                val job = launch(start = CoroutineStart.LAZY) {
                    println("协程启动!")
                    download()
                    println("协程结束!")
                }
                delay(500L)
                println("start开始")
                job.start()
                println("start结束")
                job.invokeOnCompletion {
                    println("job执行结束") // 协程结束以后就会调用这里的代码
                }
                println("join开始")
                job.join()      // 等待协程执行完毕
                println("join结束")
            }
        }

二,测试效果:

可以看到从join开始,一直等待了1秒钟时间,到执行结束

posted @ 2025-08-02 14:59  刘宏缔的架构森林  阅读(19)  评论(0)    收藏  举报