Какой оператор позволяет задать поток выполнения для подписчиков на реактивную цепочку в RxJava

«Какой оператор позволяет задать поток выполнения для подписчиков на реактивную цепочку в RxJava» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для управления потоком выполнения в RxJava используется оператор subscribeOn(). Он определяет Scheduler, на котором будет выполняться подписка и обработка данных (если не переопределено другими операторами).

Пример:

Observable.just("Hello")
    .subscribeOn(Schedulers.io()) // выполнение в IO-потоке
    .subscribe { println(it) }

Нюансы:

  • subscribeOn() влияет на весь цепочку, если не переопределено другим subscribeOn().
  • Несколько subscribeOn() в цепочке игнорируются – учитывается только первый.
  • Для изменения потока в середине цепочки используй observeOn().