线程控制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(),就在哪个线程生产事件
在哪生产事件,就在哪个线程消费事件。