将subscribeOn()与Subject一起使用

时间:2016-09-14 17:22:09

标签: rx-java reactivex

我想知道在主题上调用subscribeOn()会产生什么后果。

我理解(默认情况下)这不会改变发布的线程项目,我只是好奇它是否会引起其他一些负面影响。

一般来说,从不同的线程不安全地调用subscribe()到同一个Observable?如果是的话,subscribeOn()会以某种方式使这个安全吗?

1 个答案:

答案 0 :(得分:1)

从不同线程调用同一subscribe()上的Subject是安全的(请注意,从不同线程调用subject.doOnXXX需要同步,如果需要请求澄清)。将其推广到所有Observable是不可能的,因为很容易构造一个非线程安全的(比如可见性问题)。你是对的,因为可能使用

创建一个非线程安全的Observable线程安全
.subscribeOn(Schedulers.from(Executors.newSingleThreadExecutor()))

使用具有多个线程的调度程序将无法保护线程安全。