Sobes.tech
Junior — Middle

Wie wird die Asynchronität bei der Verwendung von Koroutinen umgesetzt?

sobes.tech KI

Antwort von AI

Asynchronität in Koroutinen wird durch das Anhalten und Fortsetzen der Ausführung ohne Blockierung der Threads erreicht. Wenn eine Koroutine eine Operation trifft, die Zeit in Anspruch nehmen kann (z.B. eine Netzwerkanfrage), wird sie (suspend) angehalten und gibt den Thread frei für andere Aufgaben. Nach Abschluss der Operation wird die Koroutine an derselben Stelle wieder aufgenommen.

Dies wird durch das suspend-Funktionsmechanismus und den Compiler umgesetzt, der Koroutinen in endliche Automaten umwandelt. Dadurch können asynchrone Codes in sequenzieller Schreibweise ohne explizite Callbacks geschrieben werden.

Beispiel in Kotlin:

suspend fun fetchData(): String {
    delay(1000) // hält die Koroutine für 1 Sekunde an, ohne den Thread zu blockieren
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // asynchron auf das Ergebnis warten
    println(result)
}