Kotlin 启动协程launch 与async的区别按照顺序启动协程

Posted 安果移不动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 启动协程launch 与async的区别按照顺序启动协程相关的知识,希望对你有一定的参考价值。

 launch 与async的区别

       binding.btClick5.setOnClickListener 
            //主线程执行协程
            runBlocking 
                //launch 不会会返回执行结果
                val job1 = launch 
                    delay(200)
                    Log.e(TAG, "onCreate: jbo1 finished.")
                
                // async 会返回执行结果
                val job2 = async 
                    delay(200)
                    Log.e(TAG, "onCreate: job2 finished.")
                    "job2 result"
                
                Log.e(TAG, "onCreate$ job2.await() ")
            
        

按照顺序启动协程

现在有三个协程。想要先启动1

之后再启动2 和3

如何操作 ,

luanch启动的话 使用 join函数

       binding.btClick5.setOnClickListener 
            //主线程执行协程
            runBlocking 
                //launch 不会会返回执行结果
                val job1 = launch 
                    delay(2000)
                    Log.e(TAG, "One")
                
                job1.join()

                val job2 = launch 
                    delay(200)
                    Log.e(TAG, "Two")
                
                val job3 = launch 
                    delay(200)
                    Log.e(TAG, "Three")
                
            
        

async的话 使用 await

      binding.btClick5.setOnClickListener 
            //主线程执行协程
            runBlocking 
                //launch 不会会返回执行结果
                val job1 = async 
                    delay(2000)
                    Log.e(TAG, "One")
                
                job1.await()

                val job2 = async 
                    delay(200)
                    Log.e(TAG, "Two")
                
                val job3 = async 
                    delay(200)
                    Log.e(TAG, "Three")
                
            
        

 join和await 都是挂起函数,都不会阻塞主线程

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Kotlin 启动协程launch 与async的区别按照顺序启动协程的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 协程协程启动 ① ( 协程构建器 | launch 构建器 | async 构建器 | runBlocking 函数 | Deferred 类 )

Kotlin 协程协程启动 ② ( 多协程控制 | launch 协程执行顺序控制 | Job#join() 函数 | async 协程执行顺序控制 | Deferred#await() 函数 )

Kotlin 协程协程启动 ② ( 多协程控制 | launch 协程执行顺序控制 | Job#join() 函数 | async 协程执行顺序控制 | Deferred#await() 函数 )

Kotlin协程 - launch原理 笔记

kotlin 协程万字协程 一篇完成kotlin 协程进阶

Kotlin协程笔记:CoroutineScope管理协程