天天看點

RxJava、RxAndroid中的幾個線程控制器

Schedulers.immediate(): 直接在目前線程運作,這是預設的 Scheduler。

Schedulers.newThread(): 總是啟用新線程,并在新線程執行操作。

Schedulers.io(): I/O 操作(讀寫檔案、讀寫資料庫、網絡資訊互動等)所使用的 Scheduler。行為模式和 newThread() 差不多,差別在于 io() 的内部實作是用一個無數量上限的線程池,是以多數情況下 io() 比 newThread() 更有效率。

Schedulers.computation(): 計算所使用的 Scheduler,不要把計算工作放在 io() 中。這個計算指的是 CPU 密集型計算,即不會被 I/O 等操作限制性能的操作,例如圖形的計算。這個 Scheduler 使用的固定的線程池,大小為 CPU 核數。不要把 I/O 操作放在 computation() 中,否則 I/O 操作的等待時間會浪費 CPU。

AndroidSchedulers.mainThread():操作将在 android 主線程(UI線程)運作。