Junior — Middle
Czy korutyna nadrzędna może zakończyć się wcześniej niż jej podrzędna korutyna uruchomiona w jej ramach?
sobes.tech AI
Odpowiedź od AI
W Kotlinie, korutyna rodzica może zakończyć się wcześniej niż korutyna dziecka, jeśli korutyna dziecka jest uruchomiona w innym kontekście lub w zakresie globalnym.
Jednakże, jeśli korutyna dziecka jest uruchomiona w kontekście rodzica (np. przez launch w CoroutineScope rodzica), to korutyna rodzica będzie czekać na zakończenie korutyn dziecięcych i zakończy się później lub równocześnie z nimi.
Przykład:
runBlocking {
val job = launch {
launch {
delay(1000)
println("Korutyna dziecka zakończona")
}
println("Korutyna rodzica zakończona")
}
job.join()
}
W tym przykładzie, korutyna rodzica nie zakończy się, dopóki korutyny dziecięce nie zostaną zakończone.
Jeśli natomiast korutyna dziecka jest uruchomiona w GlobalScope, to korutyna rodzica może zakończyć się wcześniej.