我在Scala项目中使用RxJava,我需要在一个单独的线程中执行Observable
。我知道为了实现这一点,我需要在其上调用observeOn
方法并传递rx.lang.scala.Scheduler
的实例作为参数。
但是我该如何创建该实例呢?我没有找到任何明显的实例化rx.lang.scala.Scheduler
特征的方法。例如,我有这段代码:
Observable.from(List(1,2,3)).observeOn(scheduler)
有人可以提供一个工作scheduler
变量的例子吗?
答案 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)