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.