RxJava - IO Scheduler
Schedulers.io() 方法创建并返回一个用于 IO 绑定工作的 Scheduler。线程池可以根据需要扩展。最适合 I/O 密集型操作。
Schedulers.io() 示例
使用您选择的任何编辑器在 C:\> RxJava 中创建以下 Java 程序。
ObservableTester.java
import java.util.Random; import io.reactivex.Observable; import io.reactivex.schedulers.Schedulers; public class ObservableTester { public static void main(String[] args) throws InterruptedException { Observable.just("A", "AB", "ABC") .flatMap(v -> getLengthWithDelay(v) .doOnNext(s -> System.out.println("Processing Thread " + Thread.currentThread().getName())) .subscribeOn(Schedulers.io())) .subscribe(length -> System.out.println("Receiver Thread " + Thread.currentThread().getName() + ", Item length " + length)); Thread.sleep(10000); } protected static Observable<Integer> getLengthWithDelay(String v) { Random random = new Random(); try { Thread.sleep(random.nextInt(3) * 1000); return Observable.just(v.length()); } catch (InterruptedException e) { e.printStackTrace(); } return null; } }
验证结果
使用 javac 编译器编译类,如下所示 −
C:\RxJava>javac ObservableTester.java
现在运行 ObservableTester,如下所示 −
C:\RxJava>java ObservableTester
它应该产生以下输出 −
Processing Thread RxCachedThreadScheduler-1 Receiver Thread RxCachedThreadScheduler-1, Item length 1 Processing Thread RxCachedThreadScheduler-1 Receiver Thread RxCachedThreadScheduler-1, Item length 2 Processing Thread RxCachedThreadScheduler-1 Receiver Thread RxCachedThreadScheduler-1, Item length 3