Junior — Middle
Pouvez-vous expliquer le concept de SupervisorJob dans le contexte des coroutines Kotlin?
sobes.tech IA
Réponse de l'IA
SupervisorJob en Kotlin est un type spécial de Job utilisé pour gérer un groupe de coroutines, où une erreur dans une coroutine ne annule pas les autres. Dans un Job normal, si une exception survient dans une coroutine fille, tout le Job parent et ses coroutines enfants sont annulés.
Dans le cas de SupervisorJob, les coroutines fonctionnent de manière indépendante : si l'une échoue, les autres continuent leur exécution. Cela est utile lorsque vous souhaitez lancer plusieurs tâches en parallèle sans arrêter tout en cas d'échec d'une seule.
Exemple d'utilisation :
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Cette coroutine peut échouer, mais n'affectera pas les autres
throw RuntimeException("Erreur")
}
launch {
// Cette coroutine continuera à fonctionner
println("Je travaille")
}
}
Ainsi, SupervisorJob aide à isoler les erreurs entre coroutines enfants, assurant une exécution plus robuste des tâches parallèles.