Что такое корутина

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

Ответ

Корутина — это легковесный поток, который может приостанавливать выполнение без блокировки основного потока. В отличие от потоков, корутины дешевле создавать и переключать. Они работают на основе механизма suspension (приостановки) и возобновления выполнения.

Ключевые особенности:

  • Не блокируют поток, на котором выполняются
  • Могут быть отменены
  • Поддерживают structured concurrency (структурированный параллелизм)

Пример с Kotlin:

viewModelScope.launch {
    val data = withContext(Dispatchers.IO) {
        fetchDataFromNetwork() // suspend функция
    }
    updateUI(data)
}

Где:

  • viewModelScope — скоуп корутины (автоматическая отмена при очистке ViewModel)
  • withContext — переключение между диспетчерами (IO для сетевых операций)
  • suspend функции — точки приостановки корутины