[英]Does Observable run on computation thread by default in 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();
}
}
}
它將在計算線程上執行,請參見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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.