RxJava中的单线程ExecutorService等效于什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (157)

我希望用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()吗?

提问于
用户回答回答于

取决于你的生命周期ExecutorService。如果它是一个应用程序范围并且与其整个生命周期相关联,则Schedulers.single()等同于它如果你有几个单线程ExecutorService实例,并希望你的流程阶段在不同但特定的线程上处理,那么没有。你有两个选择:

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

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

扫码关注云+社区

领取腾讯云代金券