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