Özet - Coroutine temelleri
- Kotlin kursu
- Orta seviye
- Ders 87/116
- 5 dk
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
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
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
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
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ü |