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")
}