Class CronExecutorService

java.lang.Object
org.opends.server.util.CronExecutorService
All Implemented Interfaces:
Executor, ExecutorService, ScheduledExecutorService

public final class CronExecutorService extends Object implements ScheduledExecutorService
Implements a ScheduledExecutorService on top of a cached thread pool to achieve UNIX's cron-like capabilities.

This executor service is implemented with two underlying executor services:

  • a single-thread scheduled executor which allows to start tasks based on a schedule
  • a cached thread pool which allows to run several tasks concurrently, adjusting the thread pool size when necessary. In particular, when the number of tasks to run concurrently is bigger than the tread pool size, then new threads are spawned. The thread pool is then shrinked when threads sit idle with no tasks to execute.

All the tasks submitted to the current class are 1. scheduled by the single-thread scheduled executor and 2. finally executed by the cached thread pool.

Because of this setup, the assumptions of scheduleWithFixedDelay(Runnable, long, long, TimeUnit) cannot be fulfilled, so calling this method will throw a UnsupportedOperationException.

 

(OPENDJ-3487) Current (Sept. 2017) OpenDJ threads that may be replaced by using the current class:

  • Idle Time Limit Thread
  • Task Scheduler Thread
  • Rejected: Time Thread - high resolution thread