【发布时间】:2021-07-20 23:22:09
【问题描述】:
我正在尝试了解顺序协同程序在 Kotlin 中的工作原理。
下一个示例将按顺序运行它们:
fun main(): Unit = runBlocking {
launch {
delay(1000) // Note the delay
println("A")
}.join()
launch {
println("B")
}.join()
}
作为结果,“A”-->“B”
但是next运行的时候,结果是“B”-->“A”,这是我看不懂的:
fun main(): Unit = runBlocking {
val jobA = launch {
delay(1000)
println("A")
}
val jobB = launch {
println("B")
}
jobA.join()
jobB.join()
}
当我首先调用 jobA.join() 时,我原以为它会等到完成后再执行 jobB,无论 jobA 是否调用延迟。 对此有何解释?那么作业实例如何在内部延迟的情况下按顺序执行?
【问题讨论】:
标签: concurrency kotlin-coroutines