简介
RxJava是一个异步的框架,使用Scheduler调度器通过observeOn和subscribeOn这两个方法可以对线程进行控制
调度器种类
Schedulers.io( )
用于IO密集型任务的操作(读写文件、读写数据库、网络信息交互等),具有线程缓存机制,CoreSize为1,在此调度器接收到任务后,先检查线程缓存池中,是否有空闲的线程,如果有,则复用,如果没有则创建新的线程,并加入到线程池中,如果每次都没有空闲线程使用,可以无上限的创建新线程。
Schedulers.computation()
用于CPU 密集型计算任务,即不会被 I/O 等操作限制性能的耗时操作(xml、json文件的解析,Bitmap图片的压缩取样等),具有固定的线程池,默认线程数等于处理器的数量。不可以用于I/O操作,否则I/O操作等待时间会浪费cpu
Schedulers.newThread( )
总是启动新线程,在新的线程中执行操作,不具有线程缓存机制,因为创建一个新的线程比复用一个线程更耗时耗力,虽然使用Schedulers.io( )的地方,都可以使用Schedulers.newThread( ),但是Schedulers.newThread( )的效率没有Schedulers.io( )高
Schedulers.single()
拥有一个线程单例,所有的任务都在这一个线程中执行,当此线程中有任务执行时,其他任务将会按照先进先出的顺序依次执行
Sched