Какие знаешь Dispatchers в Coroutines

«Какие знаешь Dispatchers в Coroutines» — вопрос из категории Coroutines и Flow, который задают на 34% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin Coroutines есть несколько стандартных Dispatchers:

  1. Dispatchers.Main - для работы с UI (Android, JavaFX). Работает в главном потоке.
  2. Dispatchers.IO - для блокирующих операций (сеть, БД, файлы). Использует пул потоков.
  3. Dispatchers.Default - для CPU-интенсивных задач (сортировки, вычисления). Использует пул потоков размером с количество ядер CPU.
  4. Dispatchers.Unconfined - запускает корутину в текущем потоке, но после первой приостановки может продолжить в любом.

Пример:

viewModelScope.launch(Dispatchers.IO) {
    val data = fetchData() // IO операция
    withContext(Dispatchers.Main) {
        updateUI(data) // UI операция
    }
}