Как управлять потоками с помощью в Coroutines

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

Ответ

В Kotlin Coroutines управление потоками осуществляется через Dispatchers, которые определяют, на каком потоке будет выполняться корутина. Основные диспетчеры:

  • Dispatchers.Main – UI-поток (Android)
  • Dispatchers.IO – для блокирующих операций (сеть, БД)
  • Dispatchers.Default – CPU-интенсивные задачи
  • Dispatchers.Unconfined – не привязан к конкретному потоку

Пример:

lifecycleScope.launch(Dispatchers.IO) {
    val data = fetchData() // IO поток
    withContext(Dispatchers.Main) {
        updateUi(data) // Main поток
    }
}

Для переключения между потоками используйте withContext(). Важно избегать блокирующих операций в Main потоке.