Junior — Middle
Kotlin'deki coroutine'ler bağlamında SupervisorJob kavramını açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'de SupervisorJob, bir hata durumunda diğerlerini iptal etmeyen özel bir Job türüdür. Normal bir Job'da, bir alt korutinede hata oluşursa, tüm ana Job ve onun alt korutinaları iptal edilir.
SupervisorJob durumunda, korutinalar bağımsız çalışır: biri hata ile sona ererse, diğerleri çalışmaya devam eder. Bu, birkaç paralel görevi başlatmak ve birinin başarısız olması durumunda tümünü durdurmamak istediğinizde faydalıdır.
Kullanım örneği:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Bu korutina başarısız olabilir, diğerlerini etkilemez
throw RuntimeException("Hata")
}
launch {
// Bu korutina çalışmaya devam eder
println("Çalışıyorum")
}
}
Bu şekilde, SupervisorJob alt korutinalar arasındaki hataları izole etmeye yardımcı olur ve daha dayanıklı paralel görev yürütmesini sağlar.