title: avoid the side effects of observeOn
body: <p>I have written up a mock logic test below in order to mock the behavior that I am trying to create in our code. I noticed that in the test below, there appears to be some sort of lock on the emitter that occurs ONLY once you use the observeOn operator. The issue that this is creating for me is that it only emits the objects once the lock is released, and hits the subscriber with all of that work at once. The parallel real life case that this is affecting me is with creating a stream of stock quotes (mock stream and real stream). It waits until the queue of quotes (in observeOn i think) is filled up, and then nails our subscribers with 25,000 items at once it seems. We would like to use the observeOn operator, bc we have multiple subscribers and we dont want them all hogging the one subscribeOn thread. any suggestions?</p>
  
  <pre class="lang-java prettyprint-override"><code>@Test
  public void testObserveOnLogicOutsideCreate() {
  
      Observable.&lt;AtomicInteger&gt;create(numEmit -&gt; {
          observableEmitter = numEmit;
      })
              .observeOn(Schedulers.newThread())
              .subscribe(printNum -&gt; {
                  System.out.println(printNum);
                  Assertions.assertTrue(nowObserveOnSwitchesOn);
                  prevNum = printNum.get();
              });
  
      while (i &lt; 10) {
          number.set(++i);
          observableEmitter.onNext(number);
          if (i == 10) {
              nowObserveOnSwitchesOn = true;
          }
      }
  
  }
  </code></pre>