Sobes.tech
Junior — Middle

Wie werden Koroutinen in asynchronen Anwendungen gestoppt und pausiert?

sobes.tech KI

Antwort von AI

In Kotlin werden Koroutinen mit Objekten Job und CoroutineScope verwaltet. Zum Pausieren und Beenden von Koroutinen werden folgende Mechanismen verwendet:

  • Pausieren — Koroutinen können mit dem Schlüsselwort suspend und Funktionen, die die Ausführung pausieren (z.B. delay()), pausiert werden. Dabei blockiert der Thread nicht, sondern die Koroutine wird später wieder aufgenommen.

  • Abbrechen (Beenden) — Koroutinen können durch Aufruf der Methode cancel() bei ihrem Job abgebrochen werden. Beim Abbruch erhält die Koroutine eine CancellationException und muss ordnungsgemäß beendet werden.

Beispiel für das Abbrechen einer Koroutine:

val job = CoroutineScope(Dispatchers.Default).launch {
    repeat(1000) { i ->
        println("Arbeite $i ...")
        delay(500)
    }
}

// Koroutine nach 2 Sekunden beenden
CoroutineScope(Dispatchers.Default).launch {
    delay(2000)
    job.cancel()
    println("Koroutine abgebrochen")
}

Daher ist das Pausieren ein natürlicher Teil der Arbeit von Koroutinen, und das Beenden ist ihre Abbruch durch Job.