Ответ
Корутины — это легковесные потоки выполнения, работающие внутри одного потока ОС. Они не блокируют поток, а приостанавливают выполнение (suspend), позволяя другим корутинам работать. Потоки же — это тяжелые сущности ОС, требующие больше ресурсов и переключение между ними дорого.
Ключевые отличия:
- Ресурсы: Корутины дешевле (сотни тысяч vs десятки потоков).
- Блокировка: Корутины
suspend, потоки блокируют поток ОС. - Управление: Корутины управляются разработчиком, потоки — ОС.
Пример корутины:
suspend fun fetchData() {
val data = withContext(Dispatchers.IO) { // Не блокирует поток
networkRequest()
}
updateUI(data)
}