Sobes.tech
Junior — Middle

Може ли родитељска корутина да се заврши пре дјечје корутине која је покренута унутра?

sobes.tech АИ

Одговор од АИ

U Kotlinu, roditeljska korutina može završiti pre detetove ako je detetova korutina pokrenuta u drugom kontekstu ili u globalnom scope-u.

Međutim, ako je detetova korutina pokrenuta u kontekstu roditelja (npr. putem launch u CoroutineScope roditelja), tada će roditeljska korutina čekati na završetak detetovih korutina i završiti kasnije ili istovremeno s njima.

Primer:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Detetova korutina završena")
        }
        println("Roditeljska korutina završena")
    }
    job.join()
}

U ovom primeru, roditeljska korutina se neće završiti dok se detetove korutine ne završe.

Ako, s druge strane, detetova korutina bude pokrenuta u GlobalScope, roditeljska korutina može završiti ranije.