kotlin协程val vs fun
kotlin coroutine val vs fun
我是协程和 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
被执行依次,而不是同时。
在 case 2 你同时启动了 A
和 B
然后协程才挂起等待 A
和 B
.
我是协程和 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
被执行依次,而不是同时。
在 case 2 你同时启动了 A
和 B
然后协程才挂起等待 A
和 B
.