Что произойдет если сделать операцию в Dispatchers.IO

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

Ответ

Операция в Dispatchers.IO выполнится в пуле потоков, оптимизированном для ввода-вывода (IO-операций). Этот диспетчер создает и переиспользует потоки по мере необходимости, что эффективно для блокирующих операций (сеть, файлы, БД).

Важно:

  • Не используйте для CPU-intensive задач (для них Dispatchers.Default)
  • Не блокируйте потоки надолго (может исчерпать пул)
  • Для отмены используйте coroutineContext.isActive

Пример:

withContext(Dispatchers.IO) {
    val data = blockingFileRead() // блокирующая операция
    withContext(Dispatchers.Main) {
        updateUI(data) // возвращаемся в Main поток
    }
}