Top Description Inners Fields Constructors Methods
io.reactivex.internal.schedulers

public final Class SingleScheduler

extends Scheduler
Class Inheritance
Imports
io.reactivex.Scheduler, io.reactivex.annotations.NonNull, io.reactivex.disposables.*, io.reactivex.internal.disposables.EmptyDisposable, io.reactivex.plugins.RxJavaPlugins, java.util.concurrent.*, java.util.concurrent.atomic.AtomicReference

A scheduler with a shared, single threaded underlying ScheduledExecutorService.
Since
2.0

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static class

Field Summary

Modifier and TypeField and Description
pack-priv final AtomicReference<ScheduledExecutorService>
private static final String
KEY_SINGLE_PRIORITY

The name of the system property for setting the thread priority for this Scheduler.

pack-priv static final ScheduledExecutorService
pack-priv static final RxThreadFactory
private static final String
pack-priv final ThreadFactory

Constructor Summary

AccessConstructor and Description
public
public
SingleScheduler(ThreadFactory
thread factory to use for creating worker threads. Note that this takes precedence over any system properties for configuring new thread creation. Cannot be null.
threadFactory
)

Constructs a SingleScheduler with the given ThreadFactory and prepares the single scheduler thread.

Method Summary

Modifier and TypeMethod and Description
pack-priv static ScheduledExecutorService
public Scheduler.Worker
createWorker()

Implements abstract io.reactivex.Scheduler.createWorker.

Retrieves or creates a new Scheduler.Worker that represents sequential execution of actions.
public Disposable
scheduleDirect(Runnable
the task to schedule
run
,
long
the delay amount, non-positive values indicate non-delayed scheduling
delay
,
TimeUnit
the unit of measure of the delay amount
unit
)

Overrides io.reactivex.Scheduler.scheduleDirect.

Schedules the execution of the given task with the given time delay.
public Disposable
schedulePeriodicallyDirect(Runnable
the task to schedule
run
,
long
the initial delay amount, non-positive values indicate non-delayed scheduling
initialDelay
,
long
the period at which the task should be re-executed
period
,
TimeUnit
the unit of measure of the delay amount
unit
)

Overrides io.reactivex.Scheduler.schedulePeriodicallyDirect.

Schedules a periodic execution of the given task with the given initial time delay and repeat period.
public void
shutdown()

Overrides io.reactivex.Scheduler.shutdown.

Instructs the Scheduler instance to stop threads, stop accepting tasks on any outstanding Worker instances and clean up any associated resources with this Scheduler.
public void
start()

Overrides io.reactivex.Scheduler.start.

Allows the Scheduler instance to start threads and accept tasks on them.
Inherited from io.reactivex.Scheduler:
clockDriftTolerancenowscheduleDirectwhen

Field Detail

executorback to summary
pack-priv final AtomicReference<ScheduledExecutorService> executor
KEY_SINGLE_PRIORITYback to summary
private static final String KEY_SINGLE_PRIORITY

The name of the system property for setting the thread priority for this Scheduler.

SHUTDOWNback to summary
pack-priv static final ScheduledExecutorService SHUTDOWN
SINGLE_THREAD_FACTORYback to summary
pack-priv static final RxThreadFactory SINGLE_THREAD_FACTORY
THREAD_NAME_PREFIXback to summary
private static final String THREAD_NAME_PREFIX
threadFactoryback to summary
pack-priv final ThreadFactory threadFactory

Constructor Detail

SingleSchedulerback to summary
public SingleScheduler()
SingleSchedulerback to summary
public SingleScheduler(ThreadFactory threadFactory)

Constructs a SingleScheduler with the given ThreadFactory and prepares the single scheduler thread.

Parameters
threadFactory:ThreadFactory

thread factory to use for creating worker threads. Note that this takes precedence over any system properties for configuring new thread creation. Cannot be null.

Method Detail

createExecutorback to summary
pack-priv static ScheduledExecutorService createExecutor(ThreadFactory threadFactory)
createWorkerback to summary
public Scheduler.Worker createWorker()

Implements abstract io.reactivex.Scheduler.createWorker.

Doc from io.reactivex.Scheduler.createWorker.

Retrieves or creates a new Scheduler.Worker that represents sequential execution of actions.

When work is completed, the Worker instance should be released by calling Scheduler.Worker#dispose() to avoid potential resource leaks in the underlying task-execution scheme.

Work on a Scheduler.Worker is guaranteed to be sequential and non-overlapping.

Returns:Scheduler.Worker

a Worker representing a serial queue of actions to be executed

Annotations
@NonNull
@Override
scheduleDirectback to summary
public Disposable scheduleDirect(Runnable run, long delay, TimeUnit unit)

Overrides io.reactivex.Scheduler.scheduleDirect.

Doc from io.reactivex.Scheduler.scheduleDirect.

Schedules the execution of the given task with the given time delay.

This method is safe to be called from multiple threads but there are no ordering guarantees between tasks.

Parameters
run:Runnable

the task to schedule

delay:long

the delay amount, non-positive values indicate non-delayed scheduling

unit:TimeUnit

the unit of measure of the delay amount

Returns:Disposable

the Disposable that let's one cancel this particular delayed task.

Annotations
@NonNull
@Override
schedulePeriodicallyDirectback to summary
public Disposable schedulePeriodicallyDirect(Runnable run, long initialDelay, long period, TimeUnit unit)

Overrides io.reactivex.Scheduler.schedulePeriodicallyDirect.

Doc from io.reactivex.Scheduler.schedulePeriodicallyDirect.

Schedules a periodic execution of the given task with the given initial time delay and repeat period.

This method is safe to be called from multiple threads but there are no ordering guarantees between tasks.

The periodic execution is at a fixed rate, that is, the first execution will be after the initialDelay, the second after initialDelay + period, the third after initialDelay + 2 * period, and so on.

Parameters
run:Runnable

the task to schedule

initialDelay:long

the initial delay amount, non-positive values indicate non-delayed scheduling

period:long

the period at which the task should be re-executed

unit:TimeUnit

the unit of measure of the delay amount

Returns:Disposable

the Disposable that let's one cancel this particular delayed task.

Annotations
@NonNull
@Override
shutdownback to summary
public void shutdown()

Overrides io.reactivex.Scheduler.shutdown.

Doc from io.reactivex.Scheduler.shutdown.

Instructs the Scheduler instance to stop threads, stop accepting tasks on any outstanding Worker instances and clean up any associated resources with this Scheduler.

Implementations should make sure the call is idempotent, thread-safe and should not throw any RuntimeException if it doesn't support this functionality.

Annotations
@Override
startback to summary
public void start()

Overrides io.reactivex.Scheduler.start.

Doc from io.reactivex.Scheduler.start.

Allows the Scheduler instance to start threads and accept tasks on them.

Implementations should make sure the call is idempotent, thread-safe and should not throw any RuntimeException if it doesn't support this functionality.

Annotations
@Override
io.reactivex.internal.schedulers back to summary

pack-priv final Class SingleScheduler.ScheduledWorker

extends Worker
Class Inheritance

Field Summary

Modifier and TypeField and Description
pack-priv volatile boolean
pack-priv final ScheduledExecutorService
pack-priv final CompositeDisposable

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
public void
dispose()

Implements io.reactivex.disposables.Disposable.dispose.

Dispose the resource, the operation should be idempotent.
public boolean
isDisposed()

Implements io.reactivex.disposables.Disposable.isDisposed.

Returns true if this resource has been disposed.
public Disposable
schedule(Runnable
the Runnable to schedule
run
,
long
time to "wait" before executing the action; non-positive values indicate an non-delayed schedule
delay
,
TimeUnit
the time unit of delayTime
unit
)

Implements abstract io.reactivex.Scheduler.Worker.schedule.

Schedules an Runnable for execution at some point in the future specified by a time delay relative to the current time.
Inherited from io.reactivex.Scheduler.Worker:
nowscheduleschedulePeriodically

Field Detail

disposedback to summary
pack-priv volatile boolean disposed
executorback to summary
pack-priv final ScheduledExecutorService executor
tasksback to summary
pack-priv final CompositeDisposable tasks

Constructor Detail

ScheduledWorkerback to summary
pack-priv ScheduledWorker(ScheduledExecutorService executor)

Method Detail

disposeback to summary
public void dispose()

Implements io.reactivex.disposables.Disposable.dispose.

Doc from io.reactivex.disposables.Disposable.dispose.

Dispose the resource, the operation should be idempotent.

Annotations
@Override
isDisposedback to summary
public boolean isDisposed()

Implements io.reactivex.disposables.Disposable.isDisposed.

Doc from io.reactivex.disposables.Disposable.isDisposed.

Returns true if this resource has been disposed.

Returns:boolean

true if this resource has been disposed

Annotations
@Override
scheduleback to summary
public Disposable schedule(Runnable run, long delay, TimeUnit unit)

Implements abstract io.reactivex.Scheduler.Worker.schedule.

Doc from io.reactivex.Scheduler.Worker.schedule.

Schedules an Runnable for execution at some point in the future specified by a time delay relative to the current time.

Note to implementors: non-positive delayTime should be regarded as non-delayed schedule, i.e., as if the schedule(Runnable) was called.

Parameters
run:Runnable

the Runnable to schedule

delay:long

time to "wait" before executing the action; non-positive values indicate an non-delayed schedule

unit:TimeUnit

the time unit of delayTime

Returns:Disposable

a Disposable to be able to unsubscribe the action (cancel it if not executed)

Annotations
@NonNull
@Override