如何为`observeOn`方法创建`Scheduler`?

时间:2014-06-04 20:04:14

标签: scala reactive-programming observable rx-java

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

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

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

有人可以提供一个工作scheduler变量的例子吗?

2 个答案:

答案 0 :(得分:1)

特征不可实现。

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

答案 1 :(得分:0)

所有计划程序都在软件包中

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)