Sobes.tech
Junior — Middle

Kotlin korutinləri kontekstində SupervisorJob anlayışını izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Kotlin-də 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.