避免observeOn的副作用

时间:2019-12-29 17:37:26

标签: java rx-java2

我在下面编写了一个模拟逻辑测试,以模拟我试图在我们的代码中创建的行为。我注意到在下面的测试中,似乎只有在您使用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;
        }
    }

}

0 个答案:

没有答案