Class IoScheduler


  • public final class IoScheduler
    extends Scheduler
    Scheduler that creates and caches a set of thread pools and reuses them if possible.
    • Field Detail

      • WORKER_THREAD_NAME_PREFIX

        private static final java.lang.String WORKER_THREAD_NAME_PREFIX
        See Also:
        Constant Field Values
      • WORKER_THREAD_FACTORY

        static final RxThreadFactory WORKER_THREAD_FACTORY
      • EVICTOR_THREAD_NAME_PREFIX

        private static final java.lang.String EVICTOR_THREAD_NAME_PREFIX
        See Also:
        Constant Field Values
      • EVICTOR_THREAD_FACTORY

        static final RxThreadFactory EVICTOR_THREAD_FACTORY
      • KEY_KEEP_ALIVE_TIME

        private static final java.lang.String KEY_KEEP_ALIVE_TIME
        The name of the system property for setting the keep-alive time (in seconds) for this Scheduler workers.
        See Also:
        Constant Field Values
      • KEEP_ALIVE_TIME_DEFAULT

        public static final long KEEP_ALIVE_TIME_DEFAULT
        See Also:
        Constant Field Values
      • KEEP_ALIVE_TIME

        private static final long KEEP_ALIVE_TIME
      • KEEP_ALIVE_UNIT

        private static final java.util.concurrent.TimeUnit KEEP_ALIVE_UNIT
      • threadFactory

        final java.util.concurrent.ThreadFactory threadFactory
      • KEY_IO_PRIORITY

        private static final java.lang.String KEY_IO_PRIORITY
        The name of the system property for setting the thread priority for this Scheduler.
        See Also:
        Constant Field Values
      • KEY_SCHEDULED_RELEASE

        private static final java.lang.String KEY_SCHEDULED_RELEASE
        The name of the system property for setting the release behaviour for this Scheduler.
        See Also:
        Constant Field Values
      • USE_SCHEDULED_RELEASE

        static boolean USE_SCHEDULED_RELEASE
    • Constructor Detail

      • IoScheduler

        public IoScheduler()
      • IoScheduler

        public IoScheduler​(java.util.concurrent.ThreadFactory threadFactory)
        Constructs an IoScheduler with the given thread factory and starts the pool of workers.
        Parameters:
        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

      • start

        public void start()
        Description copied from class: Scheduler
        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.

        Overrides:
        start in class Scheduler
      • shutdown

        public void shutdown()
        Description copied from class: Scheduler
        Instructs the Scheduler instance to stop threads, stop accepting tasks on any outstanding Scheduler.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.

        Overrides:
        shutdown in class Scheduler
      • createWorker

        @NonNull
        public @NonNull Scheduler.Worker createWorker()
        Description copied from class: Scheduler
        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 Disposable.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.

        Specified by:
        createWorker in class Scheduler
        Returns:
        a Worker representing a serial queue of actions to be executed
      • size

        public int size()