Sobes.tech
Junior — Middle

Kann eine übergeordnete Coroutine vor ihrer innerhalb gestarteten Kind-Coroutine beendet werden?

sobes.tech KI

Antwort von AI

In Kotlin kann die Eltern-Koroutine vor der Kind-Koroutine beendet werden, wenn die Kind-Koroutine in einem anderen Kontext oder im globalen Scope gestartet wird.

Wenn jedoch die Kind-Koroutine im Kontext der Eltern-Koroutine gestartet wird (z.B. durch launch in einem CoroutineScope der Eltern-Koroutine), wartet die Eltern-Koroutine auf den Abschluss der Kind-Koroutines und beendet sich später oder gleichzeitig mit ihnen.

Beispiel:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Kind-Koroutine beendet")
        }
        println("Eltern-Koroutine beendet")
    }
    job.join()
}

In diesem Beispiel wird die Eltern-Koroutine nicht beendet, bis die Kind-Koroutines beendet sind.

Wenn die Kind-Koroutine jedoch im GlobalScope gestartet wird, kann die Eltern-Koroutine früher beendet werden.