Ответ
Стандартные Dispatchers в Kotlin Coroutines предоставляют готовые потоки для выполнения задач в разных контекстах:
- Dispatchers.Main - работа с UI (только в Android/JavaFX)
- Dispatchers.IO - для блокирующих операций (сеть, БД, файлы)
- Dispatchers.Default - для CPU-интенсивных задач (сортировки, вычисления)
- Dispatchers.Unconfined - не привязан к конкретному потоку (используется редко)
Пример:
viewModelScope.launch(Dispatchers.IO) {
val data = repository.fetchData() // Блокирующая операция
withContext(Dispatchers.Main) {
updateUI(data) // Обновление UI
}
}
Использование правильного диспетчера важно для производительности и предотвращения блокировки UI.