Почему корутины называются легковесными

«Почему корутины называются легковесными» — вопрос из категории Coroutines и Flow, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Корутины называют легковесными, потому что они потребляют значительно меньше ресурсов по сравнению с потоками (Threads).

Основные причины:

  1. Нет накладных расходов на переключение контекста — корутины работают в рамках одного потока и переключаются кооперативно, а не вытеснительно.
  2. Минимальный стек — корутина занимает несколько десятков байт в памяти, тогда как поток требует выделения стека (обычно 1 МБ или больше).
  3. Эффективное использование потоков — тысячи корутин могут выполняться на небольшом числе потоков.

Пример:

fun main() = runBlocking {
    repeat(100_000) { // Легко создаются тысячи корутин
        launch {
            delay(1000)
            println(".")
        }
    }
}

Попытка создать столько потоков привела бы к OutOfMemoryError.