Junior — Middle
Kotlin корутиндеринин контекстинде SupervisorJob түшүнүгүн түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
Kotlin'de SupervisorJob, bir xətanın digərini ləğv etmədiyi xüsusi Job növüdür. Adi Job-da, əgər bir uşaq korutinasında istisna baş verərsə, bütün valideyn Job və onun bütün uşaq korutinaları ləğv edilir.
SupervisorJob halında, korutinalar müstəqil işləyir: əgər biri xəta ilə başa çatarsa, digərləri davam edir. Bu, bir neçə paralel vəzifəni başlatmaq və birinin uğursuzluğu zamanı hamısını dayandırmamaq üçün faydalıdır.
İstifadə nümunəsi:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Bu korutina uğursuz ola bilər, amma digərlərinə təsir etməz
throw RuntimeException("Xəta")
}
launch {
// Bu korutina işləməyə davam edəcək
println("İşləyir")
}
}
Beləliklə, SupervisorJob uşaq korutinalar arasındakı xətaları izolyasiya etməyə kömək edir və daha dayanıqlı paralel vəzifələrin icrasını təmin edir.