【问题标题】:Using subscribeOn() with a Subject将 subscribeOn() 与主题一起使用
【发布时间】:2016-09-14 17:22:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: rx-java reactivex


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多