【问题标题】:How do I create a `Scheduler` for `observeOn` method?如何为“observeOn”方法创建一个“调度程序”?
【发布时间】:2014-07-25 15:23:53
【问题描述】:

我在我的 Scala 项目中使用 RxJava,我需要在单独的线程中执行我的 Observable。我知道为了实现这一点,我需要在其上调用 observeOn 方法并将 rx.lang.scala.Scheduler 的实例作为参数传递。

但是我怎样才能创建那个实例呢?我没有找到任何明显的实例化 rx.lang.scala.Scheduler 特征的方法。例如,我有这样的代码:

Observable.from(List(1,2,3)).observeOn(scheduler)

有人可以提供一个可以解决问题的 scheduler 变量示例吗?

【问题讨论】:

    标签: scala reactive-programming observable rx-java


    【解决方案1】:

    所有调度器都在包中

    import rx.lang.scala.schedulers._
    

    对于阻塞 IO 操作,使用 IO 调度器

    Observable.from(List(1,2,3)).observeOn(IOScheduler())
    

    对于计算工作,使用计算调度器

    Observable.from(List(1,2,3)).observeOn(ComputationScheduler())
    

    在当前线程上执行

    Observable.from(List(1,2,3)).observeOn(ImmediateScheduler())
    

    在新线程上执行

    Observable.from(List(1,2,3)).observeOn(NewThreadScheduler())
    

    将当前线程上的工作队列在当前线程之后执行

    Observable.from(List(1,2,3)).observeOn(TrampolineScheduler())
    

    如果你想使用自己的自定义线程池

    val threadPoolExecutor = Executors.newFixedThreadPool(2)
    val executionContext = ExecutionContext.fromExecutor(threadPoolExecutor)
    val customScheduler = ExecutionContextScheduler(executionContext)
    Observable.from(List(1,2,3)).observeOn(customScheduler)
    

    【讨论】:

      【解决方案2】:

      特征不可实例化。

      您需要使用API documentation 中“已知子类”下列出的特征的子类之一。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        相关资源
        最近更新 更多