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() 函数 )