Class NewThreadWorker

    • Field Detail

      • executor

        private final java.util.concurrent.ScheduledExecutorService executor
      • isUnsubscribed

        volatile boolean isUnsubscribed
      • FREQUENCY_KEY

        private static final java.lang.String FREQUENCY_KEY
        The purge frequency in milliseconds.
        See Also:
        Constant Field Values
      • PURGE_FORCE_KEY

        private static final java.lang.String PURGE_FORCE_KEY
        Force the use of purge (true/false).
        See Also:
        Constant Field Values
      • PURGE_THREAD_PREFIX

        private static final java.lang.String PURGE_THREAD_PREFIX
        See Also:
        Constant Field Values
      • SHOULD_TRY_ENABLE_CANCEL_POLICY

        private static final boolean SHOULD_TRY_ENABLE_CANCEL_POLICY
      • PURGE_FREQUENCY

        public static final int PURGE_FREQUENCY
        The purge frequency in milliseconds.
      • EXECUTORS

        private static final java.util.concurrent.ConcurrentHashMap<java.util.concurrent.ScheduledThreadPoolExecutor,​java.util.concurrent.ScheduledThreadPoolExecutor> EXECUTORS
      • PURGE

        private static final java.util.concurrent.atomic.AtomicReference<java.util.concurrent.ScheduledExecutorService> PURGE
      • cachedSetRemoveOnCancelPolicyMethod

        private static volatile java.lang.Object cachedSetRemoveOnCancelPolicyMethod
        Improves performance of tryEnableCancelPolicy(ScheduledExecutorService). Also, it works even for inheritance: Method of base class can be invoked on the instance of child class.
      • SET_REMOVE_ON_CANCEL_POLICY_METHOD_NOT_SUPPORTED

        private static final java.lang.Object SET_REMOVE_ON_CANCEL_POLICY_METHOD_NOT_SUPPORTED
        Possible value of cachedSetRemoveOnCancelPolicyMethod which means that cancel policy is not supported.
    • Constructor Detail

      • NewThreadWorker

        public NewThreadWorker​(java.util.concurrent.ThreadFactory threadFactory)
    • Method Detail

      • registerExecutor

        public static void registerExecutor​(java.util.concurrent.ScheduledThreadPoolExecutor service)
        Registers the given executor service and starts the purge thread if not already started.

        public visibility reason: called from other package(s) within RxJava

        Parameters:
        service - a scheduled thread pool executor instance
      • deregisterExecutor

        public static void deregisterExecutor​(java.util.concurrent.ScheduledExecutorService service)
        Deregisters the executor service.

        public visibility reason: called from other package(s) within RxJava

        Parameters:
        service - a scheduled thread pool executor instance
      • purgeExecutors

        @SuppressAnimalSniffer
        static void purgeExecutors()
        Purges each registered executor and eagerly evicts shutdown executors.
      • tryEnableCancelPolicy

        public static boolean tryEnableCancelPolicy​(java.util.concurrent.ScheduledExecutorService executor)
        Tries to enable the Java 7+ setRemoveOnCancelPolicy.

        public visibility reason: called from other package(s) within RxJava. If the method returns false, the registerExecutor(ScheduledThreadPoolExecutor) may be called to enable the backup option of purging the executors.

        Parameters:
        executor - the executor to call setRemoveOnCaneclPolicy if available.
        Returns:
        true if the policy was successfully enabled
      • findSetRemoveOnCancelPolicyMethod

        static java.lang.reflect.Method findSetRemoveOnCancelPolicyMethod​(java.util.concurrent.ScheduledExecutorService executor)
        Tries to find "setRemoveOnCancelPolicy(boolean)" method in the class of passed executor.
        Parameters:
        executor - whose class will be used to search for required method.
        Returns:
        "setRemoveOnCancelPolicy(boolean)" Method or null if required Method was not found.
      • schedule

        public Subscription schedule​(Action0 action)
        Description copied from class: Scheduler.Worker
        Schedules an Action for execution.
        Specified by:
        schedule in class Scheduler.Worker
        Parameters:
        action - Action to schedule
        Returns:
        a subscription to be able to unsubscribe the action (unschedule it if not executed)
      • schedule

        public Subscription schedule​(Action0 action,
                                     long delayTime,
                                     java.util.concurrent.TimeUnit unit)
        Description copied from class: Scheduler.Worker
        Schedules an Action for execution at some point in the future.

        Note to implementors: non-positive delayTime should be regarded as undelayed schedule, i.e., as if the Scheduler.Worker.schedule(rx.functions.Action0) was called.

        Specified by:
        schedule in class Scheduler.Worker
        Parameters:
        action - the Action to schedule
        delayTime - time to wait before executing the action; non-positive values indicate an undelayed schedule
        unit - the time unit of delayTime
        Returns:
        a subscription to be able to unsubscribe the action (unschedule it if not executed)
      • scheduleActual

        public ScheduledAction scheduleActual​(Action0 action,
                                              long delayTime,
                                              java.util.concurrent.TimeUnit unit)
        Schedules the given action by wrapping it into a ScheduledAction on the underlying ExecutorService, returning the ScheduledAction.
        Parameters:
        action - the action to wrap and schedule
        delayTime - the delay in execution
        unit - the time unit of the delay
        Returns:
        the wrapper ScheduledAction
      • unsubscribe

        public void unsubscribe()
        Description copied from interface: Subscription
        Stops the receipt of notifications on the Subscriber that was registered when this Subscription was received.

        This allows unregistering an Subscriber before it has finished receiving all events (i.e. before onCompleted is called).

        Specified by:
        unsubscribe in interface Subscription
      • isUnsubscribed

        public boolean isUnsubscribed()
        Description copied from interface: Subscription
        Indicates whether this Subscription is currently unsubscribed.
        Specified by:
        isUnsubscribed in interface Subscription
        Returns:
        true if this Subscription is currently unsubscribed, false otherwise