src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public final Observable<T> observeOn(Scheduler scheduler, boolean delayError, int bufferSize) {
        ObjectHelper.requireNonNull(scheduler, "scheduler is null");
        ObjectHelper.verifyPositive(bufferSize, "bufferSize");
        return RxJavaPlugins.onAssembly(new ObservableObserveOn<T>(this, scheduler, delayError, bufferSize));
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public final Observable<T> observeOn(Scheduler scheduler, boolean delayError, int bufferSize) {
        ObjectHelper.requireNonNull(scheduler, "scheduler is null");
        ObjectHelper.verifyPositive(bufferSize, "bufferSize");
        return RxJavaPlugins.onAssembly(new ObservableObserveOn<T>(this, scheduler, delayError, bufferSize));
    }
@ CheckReturnValue @ SchedulerSupport ( SchedulerSupport . CUSTOM ) public final Observable < T > observeOn ( Scheduler scheduler , boolean delayError , int bufferSize ) { ObjectHelper . requireNonNull ( scheduler , "scheduler is null" ) ; ObjectHelper . verifyPositive ( bufferSize , "bufferSize" ) ; return RxJavaPlugins . onAssembly ( new ObservableObserveOn < T > ( this , scheduler , delayError , bufferSize ) ) ; }
Modifies an ObservableSource to perform its emissions and notifications on a specified {@link Scheduler},
asynchronously with an unbounded buffer of configurable "island size" and optionally delays onError notifications.
<p>
<img width="640" height="308" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/observeOn.png" alt="">
<dl>
<dt><b>Scheduler:</b></dt>
<dd>You specify which {@link Scheduler} this operator will use.</dd>
</dl>
<p>"Island size" indicates how large chunks the unbounded buffer allocates to store the excess elements waiting to be consumed
on the other side of the asynchronous boundary. Values below 16 are not recommended in performance sensitive scenarios.

@param scheduler
the {@link Scheduler} to notify {@link Observer}s on
@param delayError
indicates if the onError notification may not cut ahead of onNext notification on the other side of the
scheduling boundary. If true a sequence ending in onError will be replayed in the same order as was received
from upstream
@param bufferSize the size of the buffer.
@return the source ObservableSource modified so that its {@link Observer}s are notified on the specified
{@link Scheduler}
@see <a href="http://reactivex.io/documentation/operators/observeon.html">ReactiveX operators documentation: ObserveOn</a>
@see <a href="http://www.grahamlea.com/2014/07/rxjava-threading-examples/">RxJava Threading Examples</a>
@see #subscribeOn
@see #observeOn(Scheduler)
@see #observeOn(Scheduler, boolean)
Modifies an ObservableSource to perform its emissions and notifications on a specified { @link Scheduler } asynchronously with an unbounded buffer of configurable island size and optionally delays onError notifications . <p > <img width = 640 height = 308 src = https : // raw . github . com / wiki / ReactiveX / RxJava / images / rx - operators / observeOn . png alt = > <dl > <dt > <b > Scheduler : < / b > < / dt > <dd > You specify which { @link Scheduler } this operator will use . < / dd > < / dl > <p > Island size indicates how large chunks the unbounded buffer allocates to store the excess elements waiting to be consumed on the other side of the asynchronous boundary . Values below 16 are not recommended in performance sensitive scenarios .