Kotlin 科特林合作项目val vs fun

Kotlin 科特林合作项目val vs fun,kotlin,coroutine,Kotlin,Coroutine,我是科特林和科特林的新手。 为什么我会得到不同的结果,下面的案例1和案例2 fun main(args: Array<String>) = runBlocking { fun a() = async(CommonPool) { println("start A") delay(1000) println("finish A") } fun b() = async(CommonPool) { pr

我是科特林和科特林的新手。 为什么我会得到不同的结果,下面的案例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()
}
fun main(args:Array)=运行阻塞{
fun a()=异步(公共池){
println(“启动A”)
延迟(1000)
println(“完成A”)
}
fun b()=异步(公共池){
println(“启动B”)
延迟(1000)
println(“饰面B”)
}
//案例1
等待
等待
//案例2
val A=A()
val B=B()
A.等待
B.等待
}
这是val样式的基本编码吗?

案例1相当于

val A = a()
await(A)
val B = b()
await(B)
也就是说,您启动
A
,等待它(此时协同程序挂起),然后才启动
B
,因此
A
B
按顺序执行,而不是同时执行


在案例2中,您同时启动
A
B
,然后协同程序才会暂停等待
A
B
,啊,好的!现在我明白了。谢谢你的回复!