Middle
Kotlin'de 'suspend' anahtar kelimesi ne anlama geliyor?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'de suspend anahtar kelimesi, potansiyel olarak askıya alınıp daha sonra devam edilebilecek bir fonksiyon veya lambda ifadesini işaretlemek için kullanılır. Bu tür fonksiyonlara coroutine denir.
suspend fonksiyonlarının temel özellikleri:
- Sadece başka bir
suspendfonksiyonundan veya bir coroutine scope'undan çağrılabilirler. - Bir fonksiyonun askıya alınması, çalıştığı thread'i engellemez. Bunun yerine, thread başka görevler yapmak için kullanılabilir.
- Askıya alınmış bir işlem (örneğin, bir ağ isteği) tamamlandıktan sonra, fonksiyon askıya alındığı yerden devam eder.
- Arka planda, Kotlin derleyicisi
suspendfonksiyonlarını durum makinelerine dönüştürür ve Continuation-Passing Style (CPS) kullanır.
Örnek:
// Uzun süren bir işlemi simüle eden suspend fonksiyon örneği
suspend fun fetchData(): String {
// Ağ isteği veya uzun süren bir görevi simüle et
kotlinx.coroutines.delay(1000) // Thread'i engellemeden askıya alma
return "Veriler alındı"
}
// suspend fonksiyonunu çağıran fonksiyon
fun main() = kotlinx.coroutines.runBlocking { // runBlocking bir coroutine scope oluşturur
println("Veriler yükleniyor...")
val data = fetchData() // suspend fonksiyonunu çağır
println("Veriler: $data")
}