Sobes.tech
Middle

Was bedeutet das Schlüsselwort 'suspend' in Kotlin?

sobes.tech KI

Antwort von AI

Das Schlüsselwort suspend in Kotlin wird verwendet, um eine Funktion oder Lambda-Ausdruck zu kennzeichnen, die potenziell unterbrochen und später wieder aufgenommen werden kann. Solche Funktionen werden Koroutinen genannt.

Hauptmerkmale von suspend-Funktionen:

  • Sie können nur aus einer anderen suspend-Funktion oder aus einem Koroutinen-Scope aufgerufen werden.
  • Das Anhalten einer Funktion blockiert nicht den Thread, in dem sie ausgeführt wird. Stattdessen kann der Thread für andere Aufgaben genutzt werden.
  • Nach der Ausführung einer angehaltenen Operation (z.B. eine Netzwerk-Anfrage) setzt die Funktion ihre Arbeit an der Stelle fort, an der sie unterbrochen wurde.
  • Hinter den Kulissen wandelt der Kotlin-Compiler suspend-Funktionen in Zustandsmaschinen um, die Continuation-Passing Style (CPS) verwenden.

Beispiel:

// Beispiel einer suspend-Funktion zur Simulation einer längeren Operation
suspend fun fetchData(): String {
    // Simulation einer Netzwerk-Anfrage oder längeren Aufgabe
    kotlinx.coroutines.delay(1000) // Unterbrechung ohne Blockierung des Threads
    return "Daten empfangen"
}

// Funktion, die eine suspend-Funktion aufruft
fun main() = kotlinx.coroutines.runBlocking { // runBlocking erstellt einen Koroutinen-Scope
    println("Daten werden geladen...")
    val data = fetchData() // Aufruf der suspend-Funktion
    println("Daten: $data")
}