Sobes.tech
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 launch und async aus der Bibliothek kotlinx.coroutines ermö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.