Назад к вопросам
Яндекс
Junior — Middle
73
Может ли корутина, являющаяся родительской, закончить выполнение раньше дочерней корутины, запущенной внутри нее?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Kotlin корутина-родитель может завершиться раньше дочерней, если дочерняя корутина запущена в другом контексте или в глобальном скоупе.
Однако, если дочерняя корутина запущена в контексте родительской (например, через launch в CoroutineScope родителя), то родительская корутина будет ждать завершения дочерних корутин, и завершится позже или одновременно с ними.
Пример:
runBlocking {
val job = launch {
launch {
delay(1000)
println("Дочерняя корутина завершена")
}
println("Родительская корутина завершена")
}
job.join()
}
В этом примере родительская корутина не завершится, пока не завершатся дочерние.
Если же дочерняя корутина запущена в GlobalScope, то родительская может завершиться раньше.