Job
- Kotlin kursu
- İleri seviye
- Ders 3/83
- 5 dk
Job ve Job hierarchy öğrenirsin.
Job nedir?
Bir coroutine başlatıldığında launch bir Job döndürür. Job, o coroutine'in yaşam döngüsünü temsil eder: aktif, tamamlandı, iptal edildi durumlarını taşır.
Job üzerinden coroutine'i bekleyebilir (join), iptal edebilir (cancel) veya aktif olup olmadığını sorabilirsin (isActive). Bir Job başka bir Job'ın çocuğu olabilir; ebeveyn iptal edilirse çocuklar da iptal olur. Bu yapı hatadan sonra temizlik yapmayı kolaylaştırır.
join ile beklemek
job.join() çağrısı, ilgili coroutine tamamlanana kadar geçerli coroutine'i bekletir. Bu, sıralı davranış istediğin zaman anlamlıdır: önce iş bitsin, sonra devam et.
Örnek: val job = launch { println("İş") }; job.join(); println("Devam"). Burada İş önce, Devam sonra yazılır. join iptal edilen Job için de çalışır; çağıran coroutine iptal edilmezse beklemeyi bırakır ve devam eder.
Uygulama Job ile bekle ve yazdır
runBlocking içinde val job = launch { println("Çalışıyor") } yaz. Sonra job.join() ile bekle ve println("Bitti") yazdır.
Başlangıç kodu
// Job ve join kullan
// buraya yaz
fun main() = runBlocking {
}Örnek çözüm
fun main() = runBlocking {
val job = launch {
println("Çalışıyor")
}
job.join()
println("Bitti")
}Beklenen çıktı
Çalışıyor Bitti
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Job parçalarını eşle
| Kavram | Anlamı |
|---|---|
Job |
Yaşam döngüsü |
join |
Bekler |
cancel |
İptal eder |
isActive |
Çalışıyor mu |
2 job.join() ne yapar?
- Yeni bir coroutine başlatır
- Coroutine'i iptal eder
- Coroutine bitene kadar bekler Doğru cevap
- Thread'i uyutur
Açıklama: join, coroutine tamamlanana kadar geçerli coroutine'i bekletir.
3 Job bekleme çağrısını tamamla
val job = launch { println("İş") }
job.____()
val job = launch { println("İş") }
job.join()
Açıklama: join ile coroutine beklenir.