Страница 1 из 1

Обновление курса RxJava. Урок 6

Добавлено: 26 янв 2017, 10:46
damager82
Вышел новый урок для курса RxJava
http://startandroid.ru/ru/courses/rxjava.html

Урок 6. subcribeOn и observeOn.
В этом уроке рассмотрим, как работает RxJava с точки зрения потоков и научимся управлять потоками с помощью операторов subscribeOn и observeOn.

На сайте также есть курс по Dagger 2
http://startandroid.ru/ru/courses/dagger-2.html

В этом курсе всего 4 урока, но он практически полностью раскрывает тему.

Click here to read this article!

Re: Обновление курса RxJava. Урок 6

Добавлено: 27 янв 2017, 10:03
zTrap
В данном уроке рассказано что в RxJava есть потоки для работы с сетью и диском, так же для вычислений. Вопрос вот в чем: эти потоки заточены под свои типизировные задачи, или же это просто логическое разделение для удобства?

Re: Обновление курса RxJava. Урок 6

Добавлено: 28 янв 2017, 01:07
damager82
Отличный вопрос, спасибо! Я дополнил урок следующим текстом.


Насколько я понял, почитав различные источники, есть ощутимая разница между io и computation шедулерами.

io - может содержать сколько угодно потоков, и предполагается, что задачи выполняемые в этих потоках не будут серьезно загружать процессор. Если все потоки заняты, то под каждую новую задачу просто выделяется новый поток.

computation - максимальное число потоков ограничено количеством ядер процессора. Если все потоки заняты, то новые задачи помещаются в очередь.

Т.е. если вы IO-операции будете выполнять в computation шедулере, то получите ограничение по количеству потоков и ваши операции будут выстраиваться в очередь. При одновременной загрузке большого количества файлов из сети это может существенно снизить общую скорость загрузки.

А если вы вычислительные операции, которые сильно грузят процессор, будете выполнять в io шедулере, вы получите множество очень загруженных потоков, что может отрицательно сказаться на общей производительности.