Kotlin协程:val与fun的区别

3

我是协程和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个回答

11

案例1与之相等

val A = a()
await(A)
val B = b()
await(B)

换句话说,你启动A,等待它(此时协程暂停),然后才启动B,因此AB是顺序执行而不是同时执行。

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


啊,好的!现在我明白了。谢谢你的回复! - t.hill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接