Почему Dispatchers.Main использует один поток в Coroutines

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

Ответ

Dispatchers.Main предназначен для выполнения задач в основном потоке UI, который всегда один в Android (он же главный поток). Это необходимо, т.к. только этот поток может изменять UI элементы.

Пример:

lifecycleScope.launch(Dispatchers.Main) {
    textView.text = "Updated" // Безопасное изменение UI
}

Особенности:

  1. Гарантирует выполнение в UI потоке
  2. Позволяет избежать CalledFromWrongThreadException
  3. Под капотом использует Handler или Choreographer для планирования задач

Для фоновых операций используйте Dispatchers.IO или Dispatchers.Default.