「observeOn」メソッドの「スケジューラ」を作成するにはどうすればよいですか?
-
21-12-2019 - |
質問
Scala プロジェクトで RxJava を使用しているので、 Observable
別のスレッドで。これを達成するには電話する必要があることはわかっています observeOn
メソッドを作成し、のインスタンスを渡します rx.lang.scala.Scheduler
議論として。
しかし、そのインスタンスを作成するにはどうすればよいでしょうか?インスタンス化する明らかな方法が見つかりませんでした rx.lang.scala.Scheduler
特性。たとえば、次のコードがあります。
Observable.from(List(1,2,3)).observeOn(scheduler)
誰かが作業例を提供できますか scheduler
うまくいく変数は何でしょうか?
解決
特性はインスタンス化できません。
「既知のサブクラス」の下にリストされている特性のサブクラスの 1 つを使用する必要があります。 APIドキュメント.
他のヒント
すべてのスケジューラがパッケージに含まれています
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)
所属していません StackOverflow