Назад к вопросам
JuniorТеорияЧасто
Что выведет программа (строки через пробел)?
import kotlinx.coroutines.*
suspend fun work(name: String, ms: Long, result: Int): Int {
delay(ms)
println(name)
return result
}
fun main() = runBlocking {
val a = async { work("a", 200, 1) }
val b = async { work("b", 100, 2) }
println(a.await() + b.await())
}b a 3
- Ждать
a b 3: считать, что первой закончится корутина, которую запустили или ждут первой. Обе ждут одновременно, и короткая задержкаbкончается раньше. - Ждать суммы раньше букв: считать, что
await()возвращает значение сразу. Он приостанавливаетmain, пока блок не закончится и не напечатает свою букву.
- Сколько примерно работает вся программа и почему не 300 мс?
- Что изменится, если написать
b.await()раньшеa.await()?