2016-09-14 53 views
2

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

我明白,(默认情况下)这不会改变什么线程项目发射,我只是好奇,如果它可能会导致一些其他的负面影响。

一般来说,调用subscribe()来自不同线程的Observable是不安全的?如果是这样,subscribeOn()不知何故使这个安全吗?

回答

1

来自不同线程的Subject调用subscribe()是安全的(请注意,从不同线程调用subject.doOnXXX需要同步,如果需要请求澄清)。推广到所有Obserbles是不可能的,因为它很容易构建一个不是线程安全的(比如说可见性问题)。你是正确的,你可能使非线程安全的可观察线程安全的使用

.subscribeOn(Schedulers.from(Executors.newSingleThreadExecutor())) 

使用调度与多个线程不会保护你的线程安全的条款。