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
suspendund 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 ihremJobabgebrochen werden. Beim Abbruch erhält die Koroutine eineCancellationExceptionund 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.