CodeBlanks Logo Icon CodeBlanks

Özet - Coroutine temelleri

launch, suspend ve async/await'i birleştirerek bir paralel indirici yazarsın.

Özet - Coroutine temelleri

Bu grupta coroutine temellerini öğrendin. coroutine askıya alınabilen hafif iş parçacığıdır. launch sonuçsuz, async sonuçlu coroutine başlatır. suspend fonksiyonlar thread'i bloklamadan bekler.

runBlocking blocking dünyadan suspending dünyaya köprü kurar; main ve testlerde kullanılır. async/await paralel hesaplamayı senkron görünümlü kodla sağlar. Her araç yapısal eşzamanlılık içinde çalışır; kaynak sızıntısını önler ve kodu temiz tutar.

Doğru aracı seçmek

İşe göre aracı seç: sonuçsuz başlatma için launch, sonuçlu paralel hesap için async/await. Bekleme gerektiren fonksiyonlar suspend olarak yazılır. main veya testte runBlocking köprüsünü kullan.

Yapısal eşzamanlılık her coroutine'i bir kapsama bağlar; kapsam bitmeden alt coroutine'ler tamamlanır. Bu, açık bekleme çağrısı yapmadan kaynak sızıntısını önler. Paralel ve sıralı çalışmayı doğru ayırmak hem performans hem deterministik çıktı sağlar.

Uygulama suspend ve async/await birleştir

import kotlinx.coroutines.* ekle. suspend fun fetch(): Int { delay(100); return 5 } tanımla. fun main() = runBlocking yaz; içinde val a = async { fetch() } ve println(a.await()) çağır.

Başlangıç kodu

Main.kt
import kotlinx.coroutines.*

// fetch suspend fonksiyonunu tanımla: delay sonrası 5 döndür
// main'de runBlocking içinde async ile fetch çağır ve await ile al

Örnek çözüm

Main.kt
import kotlinx.coroutines.*

suspend fun fetch(): Int {
    delay(100)
    return 5
}

fun main() = runBlocking {
    val a = async { fetch() }
    println(a.await())
}

Beklenen çıktı

5

Uygulama runBlocking ve suspend ile selamla

import kotlinx.coroutines.* ekle. suspend fun greet(name: String): String { delay(100); return "Merhaba, $name" } tanımla. fun main() = runBlocking { println(greet("Ayşe")) } yaz.

Başlangıç kodu

Main.kt
import kotlinx.coroutines.*

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

Örnek çözüm

Main.kt
import kotlinx.coroutines.*

suspend fun greet(name: String): String {
    delay(100)
    return "Merhaba, $name"
}

fun main() = runBlocking {
    println(greet("Ayşe"))
}

Beklenen çıktı

Merhaba, Ayşe

Soru ve cevaplar

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

1 Hangisi sonuçsuz coroutine başlatır?

  • async
  • launch Doğru cevap
  • runBlocking
  • await

Açıklama: launch fire-and-forget tarzında başlatır.

2 coroutine araçlarını eşle

Kavram Anlamı
launch Sonuçsuz başlat
async/await Sonuçlu başlat
suspend Bekletilebilir
runBlocking Köprü

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