Ответ
Корутина — это легковесный поток, который может приостанавливать выполнение без блокировки основного потока. В отличие от потоков, корутины дешевле создавать и переключать. Они работают на основе механизма suspension (приостановки) и возобновления выполнения.
Ключевые особенности:
- Не блокируют поток, на котором выполняются
- Могут быть отменены
- Поддерживают structured concurrency (структурированный параллелизм)
Пример с Kotlin:
viewModelScope.launch {
val data = withContext(Dispatchers.IO) {
fetchDataFromNetwork() // suspend функция
}
updateUI(data)
}
Где:
viewModelScope— скоуп корутины (автоматическая отмена при очистке ViewModel)withContext— переключение между диспетчерами (IO для сетевых операций)suspendфункции — точки приостановки корутины