2017-02-22 38 views
0

我希望在我的地方单用RxJava螺纹ExecutorService什么是RxJava中单线程ExecutorService的等价物?

private ExecutorService executor = Executors.newSingleThreadExecutor(); 
executor.submit(/* ... */); 

我想知道什么是使用RxJava相当于设置? 我迄今为止尝试:

private Subject<MyClass> subject = PublishSubject.create() 
subject.toFlowable(MISSING) 
      .observeOn(Schedulers.single()) 
      .subscribeOn(Schedulers.single()).subscribe(obj -> { 
     // handle on next 
    }); 

这相当于ExecutorService设置我有以上或不同?我是否收到一个新的单线程执行程序Schedulers.single()

回答

1

取决于你ExecutorService的生命周期。如果它是一个应用程序范围内,并依赖于它的整个生命周期,然后Schedulers.single()相当于它。

如果你有几个,单线程ExecutorService实例,并希望自己的流程阶段进行不同的,但具体的线程处理,则没有。你从这里两个选择:

1)如果唯一的要求正在对不同的线程,但可以更改每个独立用户,可以使用io()computation()

2)如果你想于线程限制每个用户独立的阶段,您可以使用多个Schedulers.from(Executor)ExecutorService或使用RxJavaPlugins.createNewSingleScheduler(ThreadFactory)。如果你有机会依靠内部组件,你也可以只是new SingleScheduler()

+0

我想达到什么是处理我推到我的'Subject'在单个线程的对象。我的'ExecutorService'是本地的,我不关心哪个踩到我的'主题'。 __注意,我只有一个'Subscriber'。 –

+0

然后你可以使用任何'Schedulers.single()'或'Schedulers.from(执行器)'的。 – akarnokd

相关问题