src/main/java/io/reactivex/Flowable.java
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.ERROR)
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public static Flowable<Long> interval(long initialDelay, long period, TimeUnit unit, Scheduler scheduler) {
        ObjectHelper.requireNonNull(unit, "unit is null");
        ObjectHelper.requireNonNull(scheduler, "scheduler is null");
        return RxJavaPlugins.onAssembly(new FlowableInterval(Math.max(0L, initialDelay), Math.max(0L, period), unit, scheduler));
    }
@CheckReturnValue
    @NonNull
    @BackpressureSupport(BackpressureKind.ERROR)
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public static Flowable<Long> interval(long initialDelay, long period, TimeUnit unit, Scheduler scheduler) {
        ObjectHelper.requireNonNull(unit, "unit is null");
        ObjectHelper.requireNonNull(scheduler, "scheduler is null");
        return RxJavaPlugins.onAssembly(new FlowableInterval(Math.max(0L, initialDelay), Math.max(0L, period), unit, scheduler));
    }
Returns a Flowable that emits a {@code 0L} after the {@code initialDelay} and ever-increasing numbers
after each {@code period} of time thereafter, on a specified {@link Scheduler}.
<p>
<img width="640" height="200" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/timer.ps.png" alt="">
<dl>
<dt><b>Backpressure:</b></dt>
<dd>The operator generates values based on time and ignores downstream backpressure which
may lead to {@code MissingBackpressureException} at some point in the chain.
Consumers should consider applying one of the {@code onBackpressureXXX} operators as well.</dd>
<dt><b>Scheduler:</b></dt>
<dd>You specify which {@link Scheduler} this operator will use.</dd>
</dl>

@param initialDelay
the initial delay time to wait before emitting the first value of 0L
@param period
the period of time between emissions of the subsequent numbers
@param unit
the time unit for both {@code initialDelay} and {@code period}
@param scheduler
the Scheduler on which the waiting happens and items are emitted
@return a Flowable that emits a 0L after the {@code initialDelay} and ever-increasing numbers after
each {@code period} of time thereafter, while running on the given Scheduler
@see <a href="http://reactivex.io/documentation/operators/interval.html">ReactiveX operators documentation: Interval</a>
@since 1.0.12