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));
    }
@ 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
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 >