runBlocking
- Kotlin kursu
- Orta seviye
- Ders 85/116
- 5 dk
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
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
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
fun main() = ____ { println("Hazır") }
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 |