В RxJava есть 5 разных планировщиков на выбор:
немедленный(): создает и возвращает планировщик, который немедленно запускает работу в текущем потоке.
trampoline(): создает и возвращает планировщик, который работает в очереди на текущий поток, который будет выполнен после завершения текущей работы.
newThread(): Создает и возвращает Планировщик, который создает новый поток для каждой единицы работы.
computation(): Создает и возвращает планировщик, предназначенный для вычислительной работы. Это можно использовать для циклов событий, обработки обратных вызовов и другой вычислительной работы. Не выполняйте работу с IO-привязкой к этому планировщику. Используйте Schedulers. io().
io(): Создает и возвращает Планировщик, предназначенный для работы с привязкой к IO. Реализация поддерживается потоком потоков Executor, который будет расти по мере необходимости. Это можно использовать для асинхронного выполнения блокировки IO. Не выполняйте вычислительную работу над этим планировщиком. Используйте Schedulers. computation().
Вопросы:
Первые 3 планировщика довольно понятны; однако я немного запутался в вычислении и io.
- Что такое "работа с IO-привязкой"? Используется ли он для обработки потоков (
java.io
) и файлов (java.nio.files
)? Используется ли он для запросов к базе данных? Используется ли он для загрузки файлов или доступа к API REST? - Как вычисление() отличается от newThread()? Разве что все вызовы вычислений() отображаются в одном (фоновом) потоке, а не в новом (фоновом) потоке каждый раз?
- Почему плохой вызов вычисление() при работе с IO?
- Почему при выполнении вычислительной работы плохо называть io()?