Junior — Middle
Може ли да се говори за наличие на йерархия между корутините по време на изпълнението им?
sobes.tech AI
Отговор от AI
Да, в Kotlin корутините могат да имат йерархична структура. Когато стартирате корутина в контекста на друга корутина (например, използвайки launch вътре в друга корутина), се създава връзка родител-дете. Ако родителската корутина бъде отменена, всички нейните дъщерни корути автоматично се отменят. Това позволява управление на жизнения цикъл на групи корути и предотвратява изтичане на ресурси.
Пример:
val parentJob = CoroutineScope(Dispatchers.Default).launch {
val childJob = launch {
// работа на дъщерната корутина
}
}
// При отменяне на parentJob, и childJob ще бъде автоматично отменена
parentJob.cancel()