Выбор ответа Junior Корутины и structured concurrency спрашивают часто обновлено
launch или async
Вопрос
Чем launch отличается от async?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: launch даёт Job, async даёт Deferred<T с await(). Оба билдера запускают корутину. launch для работы «запустил и забыл» и возвращает Job, async для получения значения, Deferred наследует Job и добавляет await().
Варианты ответа
asyncвсегда выполняется в новом потоке,launchв текущемlaunchдаётJob,asyncдаётDeferred<T>сawait()правильный ответlaunchнельзя отменить, в отличие отasyncasyncблокирует поток, пока не вернёт результат
Разбор
Оба билдера запускают корутину. launch для работы «запустил и забыл» и возвращает Job, async для получения значения, Deferred наследует Job и добавляет await(). Поток зависит от диспетчера, а не от билдера. Отменить можно обе. Блокирует поток только runBlocking.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.