我想知道在Subject上调用subscribeOn()的后果是什么。
我明白(默认情况下)这不会改变线程项的发射,我只是好奇它是否会导致一些其他负面的副作用。
一般来说,从不同的线程调用subscribe()到同一个Observable不安全吗?如果是,subscribeOn()是否使其安全?
在同一个Subject
上从不同的线程调用subscribe()
是安全的(注意,从不同的线程调用subject.doOnXXX
需要同步,如果需要,请询问澄清)。将其推广到所有可观察对象是不可能的,因为很容易构造一个不是线程安全的(比如有可见性问题)。你是对的,可以通过使用
.subscribeOn(Schedulers.from(Executors.newSingleThreadExecutor()))
使用一个以上线程的调度程序不会保护你的线程安全。