RxJava 调度程序
调度程序用于在多线程环境中与Observable操作符一起工作。
根据Reactive的定义,调度程序用于安排操作符链在不同线程上的应用方式。
默认情况下,Observable及其应用的操作符链将在调用其Subscribe方法的相同线程上完成工作,并通知其观察者。SubscribeOn操作符通过指定Observable应该运行的不同调度程序来更改此行为。ObserveOn操作符指定Observable将用于向其观察者发送通知的不同调度程序。
RxJava提供以下类型的调度程序:
序号 | 调度器及描述 |
---|---|
1 | Schedulers.computation() 创建并返回一个用于计算工作的调度器。要调度的线程数取决于系统中的CPU数量。每个CPU允许一个线程。适用于事件循环或回调操作。 |
2 | Schedulers.io() 创建并返回一个用于IO限制工作的调度器。线程池可以根据需要进行扩展。 |
3 | Schedulers.newThread() 创建并返回一个为每个工作单元创建新线程的调度器。 |
4 | Schedulers.trampoline() 创建并返回一个在当前线程上队列工作的调度器,以在当前工作完成后执行。 |
5 | Schedulers.from(java.util.concurrent.Executor executor) 将Executor转换为新的调度器实例。 |