Como faço para criar um `Programador` para `observeOn` método?
-
21-12-2019 - |
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?
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)