我在下面编写了一个模拟逻辑测试,以模拟我试图在我们的代码中创建的行为。我注意到在下面的测试中,似乎只有在您使用observeOn运算符后,发射器上才会发生某种锁定。这给我造成的问题是,仅在释放锁定后才发出对象,并立即将所有工作击中订阅者。影响我的平行现实案例是创建股票报价流(模拟流和真实流)。它一直等到报价队列(在我认为是observOn)被填满,然后立即向我们的订户钉上25,000个商品。我们想使用observeOn运算符,因为我们有多个订阅者,我们不希望它们都占用一个subscribeOn线程。有什么建议吗?
@Test
public void testObserveOnLogicOutsideCreate() {
Observable.<AtomicInteger>create(numEmit -> {
observableEmitter = numEmit;
})
.observeOn(Schedulers.newThread())
.subscribe(printNum -> {
System.out.println(printNum);
Assertions.assertTrue(nowObserveOnSwitchesOn);
prevNum = printNum.get();
});
while (i < 10) {
number.set(++i);
observableEmitter.onNext(number);
if (i == 10) {
nowObserveOnSwitchesOn = true;
}
}
}