Sobes.tech
Junior — Middle

Korutinlar va vazifalarni boshqarishda SupervisorJob va oddiy Job o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Kotlin'da, Job koroutinlarda bajariladigan va korutinalar hierarxiyasida kuzatiladigan vazifani anglatadi. SupervisorJob esa, bolalar koroutinalarida yuzaga keladigan istisnolarga nisbatan xatti-harakatlari bilan farq qiladigan maxsus Job turidir.

Asosiy farq:

  • Job: Agar bolalar koroutinlaridan biri xatolik bilan tugasa, bu xato barcha ota-ona Jobini va qolgan bolalar koroutinlarini bekor qiladi.
  • SupervisorJob: Bir bolalar koroutinadagi xato boshqa bolalar koroutinlarini yoki ota-ona Jobini bekor qilmaydi. Bu xatoliklarni izolyatsiya qilish va boshqa vazifalarni davom ettirish imkonini beradi.

Misol:

val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)

scope.launch {
    launch {
        // Bu koroutine xatolik bilan tugaydi
        throw Exception("Bolalar koroutinada xato")
    }
    launch {
        // Bu koroutine boshqa xatolikdan qat'i nazar ishlashda davom etadi
        delay(1000)
        println("Ijro davom etmoqda")
    }
}

SupervisorJobdan foydalanish, bir vazifaning muvaffaqiyatsizligi boshqa parallel vazifalarga ta'sir qilmasligini istaganingizda qulaydir.