В чем разница между Schedulers.io() и Schedulers.computation()
В couchbase, Observables
В чем разница между: Schedulers.io() и Schedulers.computation()
Ответы
Ответ 1
Из документации rx:
Schedulers.computation() - предназначен для вычислительной работы, такой как циклы событий и обработка обратного вызова; не используйте этот планировщик для ввода-вывода (вместо этого используйте Schedulers.io()); количество потоков по умолчанию равно числу процессоров
Schedulers.io() - предназначен для работы с привязкой к I/O, такой как асинхронная производительность блокировки ввода-вывода, этот планировщик поддерживается пулом потоков, который будет расти по мере необходимости; для обычной вычислительной работы, переключитесь на Schedulers.computation(); Schedulers.io() по умолчанию является CachedThreadScheduler, который является чем-то вроде нового планировщика потоков с кэшированием потоков
Ответ 2
Краткое введение в планировщики RxJava.
Schedulers.io() - используется для выполнения операций, не требующих значительных ресурсов процессора, таких как сетевые вызовы, чтение дисков/файлов, операции с базой данных и т.д. Это поддерживает пул потоков.
Schedulers.newThread() - при этом новый поток будет создаваться каждый раз при планировании задачи. Обычно предлагается не использовать планировщик, если нет очень длительной операции. Потоки, созданные с помощью newThread(), не будут использоваться повторно.
Schedulers.computation() - этот график может использоваться для выполнения ресурсоемких операций, таких как обработка больших данных, обработка растровых изображений и т.д. Количество потоков, созданных с помощью этого планировщика, полностью зависит от числа доступных ядер ЦП.
Schedulers.single() - этот планировщик будет выполнять все задачи в порядке их добавления. Это можно использовать, когда требуется последовательное выполнение.
Schedulers.immediate() - этот планировщик выполняет задачу сразу же синхронно, блокируя основной поток.
Schedulers.trampoline() - выполняет задачи в порядке "первым вошел - первым вышел". Все запланированные задачи будут выполняться по очереди, ограничивая количество фоновых потоков одним.
Schedulers.from() - это позволяет нам создавать планировщик из исполнителя, ограничивая количество создаваемых потоков. Когда пул потоков занят, задачи будут поставлены в очередь.