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