2017-02-22 36 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

相關問題