Определение вывода асинхронных корутин в Kotlin

Обе корутины напечатают индексы от 0 до 10 каждая: всего 22 строки. Их сообщения перемежаются; await jobA не мешает jobB уже выполняться.

Короткий ответ

Что ответить на собеседовании

Обе корутины напечатают индексы от 0 до 10 каждая: всего 22 строки. Их сообщения перемежаются; await jobA не мешает jobB уже выполняться.

Подробный разбор

Ответ с пояснениями

Условие

Ниже представлен пример Kotlin‑кода, использующего корутины. Определите, какие сообщения будут напечатаны в консоли при его запуске.

fun main() = runBlocking {
    val jobA = async { outputSecond() }
    val jobB = async { outputFirst() }

    jobA.await()
    jobB.await()
}

suspend fun outputFirst() {
    for (index in 0..10) {
        delay(5)
        println("printFirst - $index")
    }
}

suspend fun outputSecond() {
    for (index in 0..10) {
        delay(10)
        println("printSecond - $index")
    }
}

Ответ

Обе корутины напечатают индексы от 0 до 10 каждая: всего 22 строки. Их сообщения перемежаются; await jobA не мешает jobB уже выполняться.

async запускаются до ожидания. outputFirst обычно выдаёт строки чаще, потому что его delay равен 5 мс, а у outputSecond — 10 мс. Но точное чередование не гарантировано таймерами и планировщиком. Внутри каждой корутины порядок индексов сохраняется; после двух await обе последовательности закончены.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее