Что выведет код Middle Корутины и structured concurrency обновлено
coroutineScope ждёт детей
Вопрос
Что выведет код? По строке на каждый вывод.
import kotlinx.coroutines.*
suspend fun loadAll() = coroutineScope {
launch { delay(200); println("profile") }
launch { delay(100); println("feed") }
println("started")
}
fun main() = runBlocking {
loadAll()
println("all loaded")
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: started, feed, profile, all loaded. coroutineScope возвращается только после завершения всех дочерних корутин.
Что выведет
started
feed
profile
all loaded
Разбор
coroutineScope возвращается только после завершения всех дочерних корутин. Тело печатает started и заканчивается, но функция ждёт детей: feed через 100 мс, profile через 200 мс. Только потом выполняется all loaded.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.