java - Rxjava2 blockingSubscribe 与订阅

标签 java kotlin rx-java2

我已经阅读了关于 blockingSubscribe()subscribe() 的解释,但我既不能写也不能找到示例来了解它们之间的区别。似乎这两者的工作方式相同。有人可以提供这 2 个的示例,最好是 Java。

最佳答案

blockingSubscribe 阻塞当前线程并在那里处理 incomnig 事件。您可以通过运行一些异步源来查看:

System.out.println("Before blockingSubscribe");
System.out.println("Before Thread: " + Thread.currentThread());

Observable.interval(1, TimeUnit.SECONDS)
.take(5)
.blockingSubscribe(t -> {
     System.out.println("Thread: " + Thread.currentThread());
     System.out.println("Value:  " + t);
});

System.out.println("After blockingSubscribe");
System.out.println("After Thread: " + Thread.currentThread());

subscribe 没有这样的限制,可以在任意线程上运行:

System.out.println("Before subscribe");
System.out.println("Before Thread: " + Thread.currentThread());

Observable.timer(1, TimeUnit.SECONDS, Schedulers.io())
.concatWith(Observable.timer(1, TimeUnit.SECONDS, Schedulers.single()))
.subscribe(t -> {
     System.out.println("Thread: " + Thread.currentThread());
     System.out.println("Value:  " + t);
});


System.out.println("After subscribe");
System.out.println("After Thread: " + Thread.currentThread());

// RxJava uses daemon threads, without this, the app would quit immediately
Thread.sleep(3000);

System.out.println("Done");

关于java - Rxjava2 blockingSubscribe 与订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54128079/

相关文章:

java - RXJava2 管理订阅

java - Intellij 构建与 Maven 构建不同

android - Kotlin中带有对象的列表的深拷贝

kotlin - 在 Kotlin 中使用 Delegate 设置和获取类字段

Android Kotlin Protected 属性公开其私有(private)类型 ExpiresLayout

android - Room - 删除在我插入新值后执行

java - 使用 JAXB 解码具有不同/动态名称的元素

java - 对于参数类型 String、void,运算符 + 未定义 - 帮助我

java - 为什么调试String拼接的时候会弹出StringBuilder?

android - 为什么我的 RxJava 设置阻塞了我的 UI 线程?使用BluetoothAdapter.startLeScan回调