kotlin协程async与await
import kotlinx.coroutines.*
import kotlin.system.measureTimeMillis
fun main() {
val time = measureTimeMillis {
runBlocking {
/**
* async 是 CoroutineScope 扩展函数,async 和 launch 的区别在于async 可以返回协程结果,而 launch 不能。
* async默认值 CoroutineStart.DEFAULT 协程在声明同时就被启动(实际上还需被调度执行,但可认为是立即就执行)
* CoroutineStart.LAZY 不主动启动协程,直到主动调用async.await()或async.satrt()后才启动(懒加载模式)
* a.await() + b.await()导致两个协程顺序执行
*/
val a = async(start = CoroutineStart.LAZY) {
delay(2000)
1
}
val b = async(start = CoroutineStart.LAZY) {
delay(3000)
2
}
/* 打破CoroutineStart.LAZY懒加载,协程立即投入执行。
a.start()
b.start()
*/
println(a.await() + b.await())
}
}
println(time)
}
输出:
3
3072