Kotlin协程await与join挂起函数异同
Kotlin
import kotlinx.coroutines.async
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
fun main() {
runBlocking {
println("start")
val job1 = async {
println("1...")
val t = (Math.random() * 999).toLong()
delay(t)
println("1 $t")
}
val job2 = async {
println("2...")
val t = (Math.random() * 999).toLong()
delay(t)
println("2 $t")
}
val job3 = async {
println("3...")
val t = (Math.random() * 999).toLong()
delay(t)
println("3 $t")
}
val r1 = job1.await()
val r2 = job2.await()
val r3 = job3.await()
println("start next")
}
}
输出:
start
1...
2...
3...
3 103
2 419
1 558
start next
Process finished with exit code 0
Kotlin协程中的await与join挂起函数,在某种程度上说,类似Java的CountDownLatch,等待任务完成后再进行下一步。await与join不同的是,await有返回值,join没有。xxx.await或者xxx.join,只要xxx这条协程运行完成,立即开始下一步。
相关:
https://blog.csdn.net/zhangphil/article/details/90758788
https://blog.csdn.net/zhangphil/article/details/147596030
https://blog.csdn.net/zhangphil/article/details/83443995
https://blog.csdn.net/zhangphil/article/details/154659832
https://blog.csdn.net/zhangphil/article/details/129270875