В чем разница между Schedulers.io и Schedulers.computation в RxJava

«В чем разница между Schedulers.io и Schedulers.computation в RxJava» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Schedulers.io предназначен для I/O-операций (сеть, БД, файлы). Он создает пул потоков, который может динамически расширяться при нехватке потоков. Подходит для блокирующих операций.

Schedulers.computation оптимизирован для CPU-интенсивных задач (вычисления, обработка данных). Размер пула равен количеству ядер CPU. Нельзя использовать для блокирующих операций!

// Для сетевых запросов
observable.subscribeOn(Schedulers.io())

// Для тяжелых вычислений
observable.subscribeOn(Schedulers.computation())