src/main/java/io/reactivex/Observable.java
@SchedulerSupport(SchedulerSupport.NONE)
    public final void blockingSubscribe(Consumer<? super T> onNext) {
        ObservableBlockingSubscribe.subscribe(this, onNext, Functions.ON_ERROR_MISSING, Functions.EMPTY_ACTION);
    }
@SchedulerSupport(SchedulerSupport.NONE)
    public final void blockingSubscribe(Consumer<? super T> onNext) {
        ObservableBlockingSubscribe.subscribe(this, onNext, Functions.ON_ERROR_MISSING, Functions.EMPTY_ACTION);
    }
Subscribes to the source and calls the given callbacks <strong>on the current thread</strong>.
<p>
<img width="640" height="393" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/blockingSubscribe.o.1.png" alt="">
<p>
If the {@code Observable} emits an error, it is wrapped into an
{@link io.reactivex.exceptions.OnErrorNotImplementedException OnErrorNotImplementedException}
and routed to the RxJavaPlugins.onError handler.
Using the overloads {@link #blockingSubscribe(Consumer, Consumer)}
or {@link #blockingSubscribe(Consumer, Consumer, Action)} instead is recommended.
<p>
Note that calling this method will block the caller thread until the upstream terminates
normally or with an error. Therefore, calling this method from special threads such as the
Android Main Thread or the Swing Event Dispatch Thread is not recommended.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code blockingSubscribe} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>
@param onNext the callback action for each source value
@since 2.0
@see #blockingSubscribe(Consumer, Consumer)
@see #blockingSubscribe(Consumer, Consumer, Action)