Работает ли Observable в вычислительном потоке по умолчанию в RxJava

В настоящее время я изучаю RxJava и просто застрял в одном базовом сомнении. См. Приведенный ниже код. Я не использую subscribeOn(). Будет ли приведенный ниже код выполняться в основном потоке или в потоке вычислений?

import io.reactivex.Observable;
import java.util.concurrent.TimeUnit;

public class Launcher {
      public static void main(String[] args) {
        Observable<Long> secondIntervals =
          Observable.interval(1, TimeUnit.SECONDS);

        secondIntervals.subscribe(s -> System.out.println(s));

        /* Hold main thread for 5 seconds
        so Observable above has chance to fire */
        sleep(5000);
      }

      public static void sleep(long millis) {
        try {
          Thread.sleep(millis);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
}

Javadoc сообщает вам: interval работает по умолчанию в Планировщике вычислений.

Dave Moten 21.05.2018 03:20
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
195
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Он будет выполняться в вычислительном потоке, см. Эту модифицированную версию вашего метода main:

public static void main(String[] args) {
    Observable<Long> secondIntervals =
            Observable.interval(1, TimeUnit.SECONDS);

    secondIntervals.subscribe(s -> System.out.println("Observable thread id: "
                                                      + Thread.currentThread().getId()));

    System.out.println("Main thread id: " + Thread.currentThread().getId());

    /* Hold main thread for 5 seconds
    so Observable above has chance to fire */
    sleep(5000);
}

Другие вопросы по теме