Статья подготовлена для студентов курса «Разработчик Android» в образовательном проекте OTUS. Корутины в Kotlin — одна из «больших фичей», как было сказано JetBrains. Мы все знаем, что блокировка при высоких нагрузках и частые опросы — не самые блестящие идеи, а мир становится всё более и более push-based и асинхронным. Многие языки (начиная с C# в 2012 году) поддерживают асинхронное программирование благодаря специальным языковым конструкциям, например, ключевым словам async/await. В Kotlin эта концепция была обобщена, чтобы библиотеки могли определять версии таких конструкций, а async превратился из ключевого слова в простую функцию. Такой дизайн позволяет интегрировать различные асинхронные API: futures/promises, callback-passing и т.д. Он также подходит для выражения ленивых генераторов (yield) и других вариантов использования. Какова практическая польза? Итак, корутины — новая классная фича в языке Kotlin (пусть пока и экспериментальная), которая позволяет писать асинхронный к