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 ,这样AB就顺序执行,而不是同时执行。

情况2中,您同时启动AB ,只有协程暂停等待AB