Kotlin协程中 launch/join 与 async/await 的区别
大家好!我开始学习Kotlin中的协程,但对两种方法感到困惑:launch/join 和 async/await。两者似乎都能并行启动任务并等待它们完成,但我不明白何时该用哪个。
我有一个简单的例子:需要下载两个文件并合并它们。我尝试了两种方式,但结果不同。
第一种方式使用 launch/join:
```kotlin
fun main() = runBlocking {
var result1 = ""
var result2 = ""
val job1 = launch {
delay(1000)
result1 = "File1 content"
}
val job2 = launch {
delay(1000)
result2 = "File2 content"
}
job1.join()
job2.join()
println("$result1 $result2")
}
```
第二种方式使用 async/await:
```kotlin
fun main() = runBlocking {
val deferred1 = async {
delay(1000)
"File1 content"
}
val deferred2 = async {
delay(1000)
"File2 content"
}
println("${deferred1.await()} ${deferred2.await()}")
}
```