Avatar ·

Quelle est la différence entre launch/join et async/await dans les coroutines Kotlin ?

Bonjour à tous ! J'ai commencé à étudier les coroutines en Kotlin et je me suis perdu entre deux approches : launch/join et async/await. Apparemment, les deux permettent de lancer des tâches en parallèle et d'attendre leur achèvement, mais je ne comprends pas quand utiliser quoi. J'ai un exemple simple : il faut télécharger deux fichiers et les fusionner. J'ai essayé les deux méthodes, mais les résultats sont différents. Première méthode avec 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") } ``` Deuxième méthode avec 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()}") } ```