Ответ
Корутины — это легковесные потоки, упрощающие асинхронное программирование. В отличие от потоков, они работают в рамках одного потока ОС и переключаются без блокировки.
Особенности:
- Используют
suspend-функции для остановки/возобновления - Экономят ресурсы (тысячи корутин vs десятки потоков)
- Интегрированы с
CoroutineScopeиDispatcher(IO, Main, Default)
Пример:
viewModelScope.launch(Dispatchers.IO) {
val data = fetchData() // suspend-функция
withContext(Dispatchers.Main) {
updateUI(data) // Обновляем UI в главном потоке
}
}
Где использовать: асинхронные операции, отмена задач, параллельные запросы.