Middle
Was ist die Funktion 'suspend' in Kotlin?
sobes.tech KI
Antwort von AI
Die Funktion suspend ist eine Funktion, die unterbrochen (suspendiert) und später wieder aufgenommen (resumed) werden kann. Sie sind ein grundlegender Bestandteil von Koroutinen in Kotlin und werden verwendet, um asynchrone Operationen ohne Blockierung des Threads durchzuführen.
Wichtige Merkmale:
- Kann nur aus einer anderen
suspend-Funktion oder aus dem Kontext einer Koroutine aufgerufen werden. Der Compiler stellt diese Einschränkung sicher. - Blockiert den Thread nicht. Bei der Ausführung einer asynchronen Operation (z.B. eine Netzwerk-Anfrage) unterbricht die
suspend-Funktion die Ausführung der Koroutine, gibt den Thread frei für andere Aufgaben. Wenn die asynchrone Operation abgeschlossen ist, wird die Koroutine an der Stelle wieder aufgenommen, an der sie unterbrochen wurde. - Wird für strukturierten Parallelismus verwendet. In Kombination mit Funktionen wie
launchundasyncaus der Bibliothekkotlinx.coroutinesermöglicht sie das Schreiben von asynchronem Code in einem sequenziellen, leicht lesbaren Stil. - Der Compiler wandelt
suspend-Funktionen in endliche Automaten um. Dies ermöglicht es, den Zustand der Koroutine zwischen den Unterbrechungspunkten zu speichern.
Beispiel:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulation einer asynchronen Operation (z.B. eine Netzwerk-Anfrage)
delay(1000) // Unterbrechungspunkte
return "Daten geladen"
}
fun main() = runBlocking {
println("Lade Daten...")
val data = fetchData() // Aufruf einer suspend-Funktion
println(data)
println("Laden abgeschlossen")
}
Hier ist fetchData eine suspend-Funktion, die delay (eine weitere suspend-Funktion) verwendet, um eine Verzögerung zu simulieren. delay ist ein Unterbrechungspunkt. runBlocking erstellt einen Koroutinen-Bereich, um main als blockierenden Thread auszuführen, aber innerhalb davon wird fetchData asynchron ausgeführt.