В чем разница между Dispatchers.IO и Dispatchers.Default в Coroutines

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

Ответ

Dispatchers.Default предназначен для CPU-интенсивных операций (сортировка, вычисления). Использует пул потоков, равный количеству ядер CPU (минимум 2).

Dispatchers.IO оптимизирован для работы с блокирующими I/O операциями (сеть, файлы, БД). Имеет расширяемый пул потоков (до 64).

Пример:

// Для вычислений
withContext(Dispatchers.Default) {
    heavyComputation()
}

// Для I/O
withContext(Dispatchers.IO) {
    readFile()
}

Важно: Не используйте Dispatchers.IO для CPU-задач – это может привести к избыточному созданию потоков.