将 subscribeOn() 与主题一起使用

Using subscribeOn() with a Subject

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

我知道(默认情况下)这不会改变发射的线程项目,我只是好奇它是否会导致其他一些负面影响。

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

在同一个Subject上从不同的线程调用subscribe()是安全的(注意从不同的线程调用subject.doOnXXX需要同步,如有需要请说明)。将其推广到所有 Observables 是不可能的,因为构造一个非线程安全的 Observables 很容易(比如存在可见性问题)。您是对的,因为您 可能 通过使用

使非线程安全的 Observable 线程安全
.subscribeOn(Schedulers.from(Executors.newSingleThreadExecutor()))

使用具有多个线程的调度程序不会在线程安全方面保护您。