Что выведет код Middle Корутины и structured concurrency обновлено
async, await и структура
Вопрос
Что выведет код? По строке на каждый вывод.
import kotlinx.coroutines.*
suspend fun work(name: String, ms: Long): String {
delay(ms)
println("done $name")
return name.uppercase()
}
fun main() = runBlocking {
val a = async { work("a", 200) }
val b = async { work("b", 100) }
println("waiting")
println(a.await() + b.await())
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: waiting, done b, done a, AB. Оба async запущены сразу и работают параллельно.
Что выведет
waiting
done b
done a
AB
Разбор
Оба async запущены сразу и работают параллельно. Сначала печатается waiting, потом b с задержкой 100 мс завершается раньше a (200 мс). await возвращает результаты в порядке, который мы задали в выражении, поэтому итог AB.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.