src/main/java/io/reactivex/parallel/ParallelFlowable.java
@CheckReturnValue
    @NonNull
    public final ParallelFlowable<T> runOn(@NonNull Scheduler scheduler) {
        return runOn(scheduler, Flowable.bufferSize());
    }
@CheckReturnValue
    @NonNull
    public final ParallelFlowable<T> runOn(@NonNull Scheduler scheduler) {
        return runOn(scheduler, Flowable.bufferSize());
    }
Specifies where each 'rail' will observe its incoming values with
no work-stealing and default prefetch amount.
<p>
This operator uses the default prefetch size returned by {@code Flowable.bufferSize()}.
<p>
The operator will call {@code Scheduler.createWorker()} as many
times as this ParallelFlowable's parallelism level is.
<p>
No assumptions are made about the Scheduler's parallelism level,
if the Scheduler's parallelism level is lower than the ParallelFlowable's,
some rails may end up on the same thread/worker.
<p>
This operator doesn't require the Scheduler to be trampolining as it
does its own built-in trampolining logic.

@param scheduler the scheduler to use
@return the new ParallelFlowable instance