CodeBlanks Logo Icon CodeBlanks

async/await

async ve await ile paralel coroutine öğrenirsin.

async ve await

async sonuç döndüren bir coroutine başlatır ve bir Deferred<T> döndürür. await() çağrısı sonucu alır. Örnek: val a = async { 10 }; println(a.await()) }.

Birden çok async paralel başlar; her biri ayrı bir coroutine'de çalışır. await() sırayla çağrılsa da toplam süre en uzun olanın süresine yaklaşır çünkü hesaplamalar paralel yürür. Bu, launch'tan farkıdır: launch sonuçsuz, async sonuçludur. Deterministik çıktı için await sırası sabit tutulur.

async/await paralelliği

İki async paralel başlatılırsa her biri eşzamanlı çalışır. val a = async { 10 }; val b = async { 20 } tanımında her iki hesaplama da aynı anda başlar. println(a.await() + b.await()) her ikisinin de bitmesini bekler ve toplamı verir.

Çıktı deterministiktir: 30. Çünkü await sonuçları sabit sırayla toplanır. Paralel çalışma süreyi kısaltır ama sonuç değerleri belirlidir. async yalnızca bir coroutine scope içinde (örneğin runBlocking) çağrılır.

Uygulama async ve await ile topla

import kotlinx.coroutines.* ekle. fun main() = runBlocking yaz; içinde val a = async { 10 } ve val b = async { 20 } tanımla. println(a.await() + b.await()) ile toplamı yazdır.

Başlangıç kodu

Main.kt
import kotlinx.coroutines.*

// runBlocking içinde iki async başlat ve await ile topla

Örnek çözüm

Main.kt
import kotlinx.coroutines.*

fun main() = runBlocking {
    val a = async { 10 }
    val b = async { 20 }
    println(a.await() + b.await())
}

Beklenen çıktı

30

Soru ve cevaplar

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

1 async/await kavramlarını eşle

Kavram Anlamı
async Başlat, sonuçlu
await Sonucu al
Deferred Tip
parallel Paralel

2 await çağrısını tamamla

Soru
val a = async { 10 }
val result = a.____()
Cevap
val a = async { 10 }
val result = a.await()

Açıklama: await Deferred'den değeri alır.

3 async ne döndürür?

  • Deferred Doğru cevap
  • Int
  • Unit
  • Job

Açıklama: async bir Deferred<T> döndürür; await ile değer alınır.

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