Sobes.tech
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 suspend fonksiyonundan 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 suspend fonksiyonları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")
}