Pergunta

Eu estou usando RxJava na minha Scala projeto e preciso para executar minhas Observable em uma thread separada.Eu sei que para conseguir isso eu preciso chamar observeOn método e passar uma instância de rx.lang.scala.Scheduler como um argumento.

Mas, como eu posso criar essa instância?Eu não encontrei qualquer aparente formas de instanciação de rx.lang.scala.Scheduler traço.Por exemplo, eu tenho este código:

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

Alguém pode dar um exemplo de trabalho scheduler variável que irá fazer o truque?

Foi útil?

Solução

Uma característica que não é instanciáveis.

Você precisa usar uma das subclasses da característica listada em "Conhecido Subclasses" no A documentação da API.

Outras dicas

Todos os agendadores estão no pacote

import rx.lang.scala.schedulers._

Para o bloqueio de operações de e / s, use IO programador

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

Para o trabalho computacional, o uso de computação programador

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

Para executar num thread atual

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

Para executar em um novo segmento

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

Para filas de trabalho no thread atual para ser executado depois que o atual

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

Se você quiser usar o seu próprio personalizado pool de threads

val threadPoolExecutor = Executors.newFixedThreadPool(2)
val executionContext = ExecutionContext.fromExecutor(threadPoolExecutor)
val customScheduler = ExecutionContextScheduler(executionContext)
Observable.from(List(1,2,3)).observeOn(customScheduler)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top