В настоящее время я изучаю 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();
}
}
}




Он будет выполняться в вычислительном потоке, см. Эту модифицированную версию вашего метода 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);
}
Javadoc сообщает вам: interval работает по умолчанию в Планировщике вычислений.