SupervisorJob
- Kotlin kursu
- İleri seviye
- Ders 4/83
- 5 dk
SupervisorJob ile hata izolasyonu öğrenirsin.
SupervisorJob nedir?
SupervisorJob, çocuk coroutine'lerin hatalarını birbirine yaymayan özel bir Job türüdür. Normal bir Job bir çocuk hata verdiğinde tüm kardeşleri iptal eder; SupervisorJob ise hatayı yalnızca o çocuğa indirir.
Bu, bir isteğin başarısız olduğunda diğerlerini sürdürmek istediğin senaryolarda anlamlıdır. supervisorScope { ... } ile bir supervisor kapsam açar, içine birden fazla launch koyarsın. Bir çocuk çökerse diğerleri çalışmaya devam eder.
Uygulama supervisorScope ile iki launch
runBlocking içinde supervisorScope aç. İçinde val job = launch { println("İçeride") } yaz, sonra job.join() ile bekle. Kapanıştan sonra println("Dışarıda") yazdır.
Başlangıç kodu
// supervisorScope ile iki launch
// buraya yaz
fun main() = runBlocking {
}Örnek çözüm
fun main() = runBlocking {
supervisorScope {
val job = launch {
println("İçeride")
}
job.join()
}
println("Dışarıda")
}Beklenen çıktı
İçeride Dışarıda
supervisorScope kullanımı
supervisorScope bir suspending fonksiyondur; çağrıldığında yeni bir SupervisorJob ile child kapsamı oluşturur ve tüm çocuklar bitene kadar bekler. Bir çocuk hata verse bile diğerlerini iptal etmez.
Örnek: supervisorScope { launch { fetchA() }; launch { fetchB() } }. fetchA başarısız olursa fetchB yine de tamamlanır. Bu davranış, bağımsız işlerin paralel yürütülmesinde anlamlıdır; örn. birden fazla API çağrısının aynı anda yapılması.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 SupervisorJob ne sağlar?
- Tüm çocukları iptal eder
- Daha hızlı çalışır
- Thread sayısını artırır
- Çocuk hatalarını izole eder Doğru cevap
Açıklama: SupervisorJob bir çocuğun hatasının diğerlerine yayılmasını engeller.
2 supervisor kapsam adını tamamla
supervisor____ {
launch { fetchA() }
launch { fetchB() }
}
supervisorScope {
launch { fetchA() }
launch { fetchB() }
}
Açıklama: supervisorScope ile supervisor kapsam açılır.
3 SupervisorJob parçalarını eşle
| Kavram | Anlamı |
|---|---|
SupervisorJob |
İzolasyon sağlar |
supervisorScope |
Supervisor kapsam |
Job |
Hata yayar |
launch |
Çocuk başlatır |