Avatar ·

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()}") } ```