线程控制Scheduler
Scheduler的APl:
用于控制操作符和被观察者事件,所执行的线程。不同的调度器,对应不同的线程
调度器的分类:
Schedulers.immediate():默认线程
Schedulers.newThread():新建线程
Schedulers.io()︰适用于I/o操作(线程池)
Schedulers.computation():适用于计算工作(线程池)
Schedulers.trampoline():当前线程,队列执行
进行线程调度:
subscribeOn():指定subscribe()所发生的线程,即Observable.OnSubscribe被激活时所处的线程。或者叫做事件产生的线程。
observeOn():指定Subscriber所运行在的线程。或者叫做事件消费的线程。
/**
* Schedulers的API
*/
public void test05(){
Observable.from(getData())
.subscribeOn(Schedulers.io())//指定所运行的线程(线程调度)
.observeOn(AndroidSchedulers.mainThread())//指定observer的线程
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
Log.d(TAG, "call: "+String.valueOf(integer));
}
});
}
private static List<Integer> getData(){
List<Integer> list=new ArrayList<>();
for (int i=0;i<10;i++){
list.add(i);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return list;
}
RxJava遵循的是线程不变的原则:
在哪调用subscribe(),就在哪个线程生产事件
在哪生产事件,就在哪个线程消费事件。