CodeBlanks Logo Icon CodeBlanks

runBlocking

runBlocking ile coroutine main öğrenirsin.

runBlocking

runBlocking blocking dünyayı suspending dünyaya bağlayan köprüdür. Çağrıldığı thread'i bloklarken içerideki coroutine'leri çalıştırır ve hepsi bitene kadar dönmez. Örnek: fun main() = runBlocking { println(compute()) }.

runBlocking özellikle main ve testlerde kullanılır. Üretim kodunda coroutine'leri bloklamak istenmediğinden runBlocking yerine uygun bir scope tercih edilir. Ama giriş noktasında veya testte suspend fonksiyonları çağırmanın en kolay yoludur. main'de runBlocking kullanmak yaygın bir desendir.

runBlocking kullanımı

runBlocking içinde suspend fonksiyonlar doğrudan çağrılır. Örnek: fun main() = runBlocking { val result = compute(); println("Sonuç: $result") }. compute bitene kadar runBlocking dönmaz.

Birden çok suspend fonksiyon sırayla çağrılırsa her biri beklenir; toplam süre toplam bekleme kadardır. Paralel çalışma için async kullanılır; bunu bir sonraki derste göreceksin. runBlocking temel olarak main'de veya @Test işaretli test yöntemlerinde köprü olarak kullanılır.

Uygulama runBlocking ile suspend çağır

import kotlinx.coroutines.* ekle. suspend fun compute(): Int { delay(100); return 10 } tanımla. fun main() = runBlocking { val result = compute(); println("Sonuç: $result") } yaz.

Başlangıç kodu

Main.kt
import kotlinx.coroutines.*

// compute suspend fonksiyonunu tanımla: delay sonrası 10 döndür
// main'de runBlocking içinde compute çağır ve yazdır

Örnek çözüm

Main.kt
import kotlinx.coroutines.*

suspend fun compute(): Int {
    delay(100)
    return 10
}

fun main() = runBlocking {
    val result = compute()
    println("Sonuç: $result")
}

Beklenen çıktı

Sonuç: 10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 runBlocking ne yapar?

  • Coroutine başlatmaz
  • Yalnızca suspend çağırır
  • Asla bitmez
  • Thread'i blok eder ve coroutine çalıştırır Doğru cevap

Açıklama: runBlocking thread'i bloklarken coroutine'leri çalıştırır.

2 runBlocking bildirimini tamamla

Soru
fun main() = ____ { println("Hazır") }
Cevap
fun main() = runBlocking { println("Hazır") }

Açıklama: runBlocking main içinde scope açar.

3 runBlocking kavramlarını eşle

Kavram Anlamı
runBlocking Thread bloklar
main() Giriş noktası
bridge Köprü
test Yaygın kullanım

Orta seviye bölümündeki tüm dersler