Android Interview Review

@AndroidSobes Нравится 2 1 500

Популярные вопросы и ответы с собеседований на Android-разработчика.
Канал для Java-разработчиков @JavaSobes
Связаться с нами @SobesAdmin
https://itsobes.ru
Гео и язык канала
Россия, Русский
Категория
Образование


Написать автору
Гео канала
Россия
Язык канала
Русский
Категория
Образование
Добавлен в индекс
18.03.2019 05:12
25 Jul 2019, 18:01 (210 дней назад)
В чем разница между Schedulers⁠.io() и Schedulers⁠.computation() в RxJava?

Операторы смены потока выполнения (треда) subscribeOn() и observeOn() в RxJava принимают объект класса Scheduler.

Scheduler можно создать с помощью статических фабричных методов класса Schedulers.
Самые часто используемые методы: Schedulers.io() и Schedulers.computation().

Schedulers.io() возвращает Scheduler, который предназначен для выполнения блокирующих IO операций. IO Scheduler основан на неограниченном пуле потоков. Для выполнения задачи из пула выбирается поток и затем возвращается в пул после завершения работы. Если в пуле нет свободных потоков, то создается новый поток и добавляется в пул.
Новые потоки будут оставаться в пуле на протяжении всей жизни приложения. Неосторожное использование IO Scheduler может привести к крэшу приложения с OutOfMemoryError.

Schedulers.computation() возвращает Scheduler, предназначенный для выполнения вычислительной работы. Не рекомендуется использовать этот Scheduler для блокирующих операций. Computation Scheduler основан на пуле потоков фиксированного размера. По умолчанию размер пула равен количеству процессоров, которое получается методом Runtime.availableProcessors(). Если на выполнение приходит задача, когда все потоки пула заняты, задача добавляется в очередь и будет выполнены первым освободившимся потоком.

Подробнее о различных реализациях Scheduler.

#RxJava