2016-09-14 18 views
2

我想知道在主題上調用subscribeOn()會產生什麼後果。對主題使用subscribeOn()

我明白,(默認情況下)這不會改變什麼線程項目發射,我只是好奇,如果它可能會導致一些其他的負面影響。

一般來說,調用subscribe()來自不同線程的Observable是不安全的?如果是這樣,subscribeOn()不知何故使這個安全嗎?

回答

1

來自不同線程的Subject調用subscribe()是安全的(請注意,從不同線程調用subject.doOnXXX需要同步,如果需要請求澄清)。推廣到所有Obserbles是不可能的,因爲它很容易構建一個不是線程安全的(比如說可見性問題)。你是正確的,你可能使非線程安全的可觀察線程安全的使用

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

使用調度與多個線程不會保護你的線程安全的條款。