Sobes.tech
Назад к вопросам
Junior — Middle
73

Может ли корутина, являющаяся родительской, закончить выполнение раньше дочерней корутины, запущенной внутри нее?

Компании, где спрашивали
ЯндексЯндекс

Ответ от нейросети

sobes.tech AI

В Kotlin корутина-родитель может завершиться раньше дочерней, если дочерняя корутина запущена в другом контексте или в глобальном скоупе.

Однако, если дочерняя корутина запущена в контексте родительской (например, через launch в CoroutineScope родителя), то родительская корутина будет ждать завершения дочерних корутин, и завершится позже или одновременно с ними.

Пример:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Дочерняя корутина завершена")
        }
        println("Родительская корутина завершена")
    }
    job.join()
}

В этом примере родительская корутина не завершится, пока не завершатся дочерние.

Если же дочерняя корутина запущена в GlobalScope, то родительская может завершиться раньше.