async/await
- Kotlin kursu
- Orta seviye
- Ders 86/116
- 5 dk
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
import kotlinx.coroutines.*
// runBlocking içinde iki async başlat ve await ile toplaÖrnek çözüm
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
val a = async { 10 }
val result = a.____()
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.