Junior — Middle
Môžete vysvetliť koncept SupervisorJob v kontexte Kotlin korutín?
sobes.tech AI
Odpoveď od AI
SupervisorJob v Kotlinu je špeciálny typ Job, ktorý sa používa na riadenie skupiny korutín, kde chyba v jednej korutíne ne spôsobí zrušenie ostatných. V bežnom Job dojde pri výskyte výnimky v dcérskej korutíne k zrušeniu celého rodičovského Job a všetkých jeho dcérskych korutín.
V prípade SupervisorJob korutiny fungujú nezávisle: ak jedna skončí chybou, ostatné pokračujú v behu. To je užitočné, keď chcete spustiť niekoľko paralelných úloh a nezastaviť všetko pri zlyhaní jednej.
Príklad použitia:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Táto korutina môže zlyhať, ale neovplyvní ostatné
throw RuntimeException("Chyba")
}
launch {
// Táto korutina bude pokračovať v práci
println("Pracujem")
}
}
Takto SupervisorJob pomáha izolovať chyby medzi dcérskymi korutinami, zabezpečujúc odolnejšie vykonávanie paralelných úloh.