前两篇文章介绍了RxJava的Single和Subject,想必大家对RxJava已经有简单的认识,并且可以写出异步任处理的具体实现了,本文会介绍Scheduler调度器的使用。
之前文章中我们有提到过subscribeOn和observeOn两个方法,他们都接收一个Scheduler参数做为传入值。主要作用就是指定异步任务Obserable和订阅者Subscribe两者处理的线程。
下表展示RxJava中常见的调度器种类:
调度器类型
效果
Schedulers.computation()
用于计算任务,如事件循环或和回调处理,不要用于IO操作(IO操作请使用Schedulers.io());默认线程数等于处理器的数量
Schedulers.from(executor)
使用指定的Executor作为调度器
Schedulers.immediate( )
在当前线程立即开始执行任务
Schedulers.io( )
用于IO密集型任务,如异步阻塞IO操作,这个调度器的线程池会根据需要增长;对于普通的计算任务,请使用Schedulers.computation();Schedulers.io( )默认是一个CachedThreadScheduler,很像一个有线程缓存的新线程调度器
Schedulers.newThread( )
为每个任务创建一个新线程
Schedulers.trampoline( )
当其它排队的任务完成后,在当前线程排队开始执行
除了之前我们介绍过的subscribeOn/observeOn会用到Scheduler。在RxJava中还有Worker会用到它。
比如传