kotlin coroutine val vs乐趣
我是协程和Kotlin的新学习者。 为什么我会得到不同的结果,下面的情况1和2?
fun main(args: Array<String>) = runBlocking { fun a() = async(CommonPool) { println("start A") delay(1000) println("finish A") } fun b() = async(CommonPool) { println("start B") delay(1000) println("finish B") } //case 1 a().await() b().await() //case 2 val A = a() val B = b() A.await() B.await() }
这种val风格的编码基本?
案例1相当于
val A = a() await(A) val B = b() await(B)
也就是说,你启动A
,等待它(这里是协程暂停),然后才开始B
,这样A
和B
就顺序执行,而不是同时执行。
在情况2中,您同时启动A
和B
,只有协程暂停等待A
和B