Junior — Middle
Můžete vysvětlit koncept SupervisorJob v kontextu coroutine v Kotlinu?
sobes.tech AI
Odpověď od AI
SupervisorJob v Kotlinu je speciální typ Job, který se používá k řízení skupiny korutin, kde chyba v jedné korutině ne způsobí zrušení ostatních. U běžného Job dojde při výskytu výjimky v dceřiné korutině ke zrušení celého rodičovského Job a všech jeho dceřiných korutin.
V případě SupervisorJob korutiny fungují nezávisle: pokud jedna skončí chybou, ostatní pokračují v běhu. To je užitečné, když chcete spustit několik paralelních úkolů a nezastavovat vše při selhání jedné.
Příklad použití:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Tato korutina může selhat, ale neovlivní ostatní
throw RuntimeException("Chyba")
}
launch {
// Tato korutina bude pokračovat v práci
println("Pracuji")
}
}
Tímto způsobem SupervisorJob pomáhá izolovat chyby mezi dceřinými korutinami, zajišťujíc odolnější provádění paralelních úkolů.