CodeBlanks Logo Icon CodeBlanks

Job

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

Main.kt
// Job ve join kullan
// buraya yaz
fun main() = runBlocking {
    
}

Örnek çözüm

Main.kt
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

Soru
val job = launch { println("İş") }
job.____()
Cevap
val job = launch { println("İş") }
job.join()

Açıklama: join ile coroutine beklenir.

İleri seviye bölümündeki tüm dersler