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.