Sobes.tech
Junior — Middle

Korutinler ve görev yönetimi bağlamında SupervisorJob ile normal Job arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de, Job koroutinelerde iptal edilebilen ve hiyerarşide takip edilen bir görevi temsil eder. SupervisorJob ise, çocuk koroutinelerdeki istisnalar durumunda davranış farkı gösteren özel bir Job türüdür.

Ana fark:

  • Job: Eğer çocuk koroutinelerden biri hata ile sona ererse, bu hata tüm ebeveyn Job'u ve diğer tüm çocuk koroutineleri iptal eder.
  • SupervisorJob: Bir çocuk koroutine'deki hata, diğer çocuk koroutineleri veya ebeveyn Job'u iptal etmez. Bu, hataları izole etmeye ve diğer görevlerin yürütülmesine devam etmeye olanak tanır.

Örnek:

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

scope.launch {
    launch {
        // Bu koroutine bir istisna ile başarısız olacak
        throw Exception("Çocuk koroutine'de hata")
    }
    launch {
        // Bu koroutine, diğerindeki hataya rağmen çalışmaya devam edecek
        delay(1000)
        println("Yürütme devam ediyor")
    }
}

SupervisorJob kullanımı, bir görevin başarısızlığının diğer paralel görevleri etkilememesini istediğinizde kullanışlıdır.