Почему suspend-функции считаются легковесными

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

Ответ

Suspend-функции легковесны, потому что они не блокируют поток, а лишь приостанавливают выполнение корутины, освобождая поток для других задач. В отличие от потоков, корутины работают на уровне пользователя (не ОС), что минимизирует накладные расходы на создание и переключение контекста.

Пример:

suspend fun fetchData(): String {
    delay(1000) // Не блокирует поток, а приостанавливает корутину
    return "Data"
}

Ключевые преимущества:

  • Нет создания новых потоков
  • Минимальные затраты памяти
  • Быстрое переключение между корутинами
  • Поддержка тысяч одновременных suspend-вызовов