Question

J'utilise RxJava dans mon projet Scala et je dois exécuter mon Observable dans un fil séparé.Je sais que pour y parvenir, je dois appeler observeOn méthode dessus et passer une instance de rx.lang.scala.Scheduler comme argument.

Mais comment puis-je créer cette instance ?Je n'ai trouvé aucun moyen apparent d'instancier rx.lang.scala.Scheduler trait.Par exemple, j'ai ce code :

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

Quelqu'un peut-il donner un exemple de travail scheduler variable qui fera l'affaire ?

Était-ce utile?

La solution

Un trait n'est pas instanciable.

Vous devez utiliser l'une des sous-classes du trait répertoriées sous « Sous-classes connues » dans le Documentation API.

Autres conseils

Tous les planificateurs sont dans le package

import rx.lang.scala.schedulers._

Pour bloquer les opérations IO, utilisez le planificateur IO

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

Pour le travail de calcul, utilisez le planificateur de calcul

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

À exécuter sur le thread actuel

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

Pour exécuter sur un nouveau thread

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

Pour que les files d'attente fonctionnent sur le thread actuel à exécuter après celui en cours

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

Si vous souhaitez utiliser votre propre pool de threads personnalisé

val threadPoolExecutor = Executors.newFixedThreadPool(2)
val executionContext = ExecutionContext.fromExecutor(threadPoolExecutor)
val customScheduler = ExecutionContextScheduler(executionContext)
Observable.from(List(1,2,3)).observeOn(customScheduler)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top