Блок create выполнится на scheduler Schedulers.io(), а не на UI-потоке. Обработчик subscribe в этом примере не вызовется: источник не отправляет элементы.
Определение потока выполнения subscribeOn в RxJava
Блок create выполнится на scheduler Schedulers.io(), а не на UI-потоке. Обработчик subscribe в этом примере не вызовется: источник не отправляет элементы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужно понять, в каком потоке будет работать блок create, если запускать приведённый ниже код из главного (UI) потока.
Observable.create<Int> { }
.subscribeOn(Schedulers.io())
.subscribe { }
Ответ
Блок create выполнится на scheduler Schedulers.io(), а не на UI-потоке. Обработчик subscribe в этом примере не вызовется: источник не отправляет элементы.
subscribeOn переносит подписку на источник, включая выполнение переданной в create функции. Однако пустой блок не вызывает ни onNext, ни onComplete, поэтому подписка остаётся незавершённой без значений.
Если добавить синхронный emitter.onNext(1), обработчик подписчика без observeOn также выполнится в потоке источника. Для обновления Android UI ниже по цепочке нужен observeOn(AndroidSchedulers.mainThread()). Подписку следует освобождать через Disposable согласно жизненному циклу экрана.