Ответ
Coroutine — это легковесный поток, работающий поверх основного потока. В отличие от потоков ОС, корутины дешево создавать и переключать. Они используют механизм suspension (приостановки) вместо блокировки, что позволяет эффективно управлять асинхронными операциями.
Корутина приостанавливается (suspend) при встрече с долгой операцией (например, сетевой запрос), освобождая поток для других задач. Когда операция завершается, корутина возобновляется (resume) в том же или другом потоке.
Пример:
viewModelScope.launch {
val data = withContext(Dispatchers.IO) { // переключаемся на IO поток
repository.fetchData() // suspend функция
}
updateUi(data) // выполняется в Main потоке
}
Ключевые преимущества:
- Нет блокировки потока
- Читаемый последовательный код
- Встроенная отмена операций
- Минимальные накладные расходы