我在Scala项目中使用RxJava,我需要在一个单独的线程中执行我的Observable
。我知道为了实现这一点,我需要在它上调用observeOn
方法并传递rx.lang.scala.Scheduler
的实例作为参数。
但是我怎么创建那个实例呢?我没有发现任何明显的实例化rx.lang.scala.Scheduler
特性的方法。例如,我有这样的代码:
Observable.from(List(1,2,3)).observeOn(scheduler)
有人能提供一个工作scheduler
变量的例子,将做的伎俩?
trait是不可实例化的
你需要使用API文档中"已知子类"下列出的trait的一个子类。
所有调度器都在包中
import rx.lang.scala.schedulers._
阻塞IO操作,使用IO scheduler
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)