Package org.opends.server.util
Class CronExecutorService
java.lang.Object
org.opends.server.util.CronExecutorService
- All Implemented Interfaces:
Executor,ExecutorService,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 executorwhich allows to start tasks based on a schedulea cached thread poolwhich 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
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longHelper for representing zero delay constant.static final ScheduledExecutorServiceA Null CronExecutor, used during server shutdown. -
Constructor Summary
ConstructorsConstructorDescriptionCronExecutorService(ServerContext serverContext) Build cron executor with the provided server context. -
Method Summary
Modifier and TypeMethodDescriptionbooleanawaitTermination(long timeout, TimeUnit unit) voidinvokeAll(Collection<? extends Callable<T>> tasks) invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) <T> TinvokeAny(Collection<? extends Callable<T>> tasks) <T> TinvokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) booleanboolean<V> ScheduledFuture<V>scheduleAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) scheduleWithFixedDelay(Runnable task, long initialDelay, long delay, TimeUnit unit) voidshutdown()Future<?><T> Future<T><T> Future<T>
-
Field Details
-
EXECUTE_IMMEDIATELY_AND_EVERY
public static final long EXECUTE_IMMEDIATELY_AND_EVERYHelper for representing zero delay constant.- See Also:
-
NULL_CRON_EXECUTOR
A Null CronExecutor, used during server shutdown. It reports being already shutdown and all scheduled tasks are ignored, returning a completed result.
-
-
Constructor Details
-
CronExecutorService
Build cron executor with the provided server context.- Parameters:
serverContext- The server context.
-
-
Method Details
-
execute
-
submit
- Specified by:
submitin interfaceExecutorService
-
submit
- Specified by:
submitin interfaceExecutorService
-
submit
- Specified by:
submitin interfaceExecutorService
-
scheduleAtFixedRate
public ScheduledFuture<?> scheduleAtFixedRate(Runnable task, long initialDelay, long period, TimeUnit unit) - Specified by:
scheduleAtFixedRatein interfaceScheduledExecutorService
-
scheduleWithFixedDelay
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, long initialDelay, long delay, TimeUnit unit) - Specified by:
scheduleWithFixedDelayin interfaceScheduledExecutorService
-
schedule
- Specified by:
schedulein interfaceScheduledExecutorService
-
schedule
- Specified by:
schedulein interfaceScheduledExecutorService
-
invokeAny
- Specified by:
invokeAnyin interfaceExecutorService
-
invokeAny
- Specified by:
invokeAnyin interfaceExecutorService
-
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) - Specified by:
invokeAllin interfaceExecutorService
-
invokeAll
- Specified by:
invokeAllin interfaceExecutorService
-
awaitTermination
- Specified by:
awaitTerminationin interfaceExecutorService- Throws:
InterruptedException
-
shutdown
public void shutdown()- Specified by:
shutdownin interfaceExecutorService
-
shutdownNow
- Specified by:
shutdownNowin interfaceExecutorService
-
isShutdown
public boolean isShutdown()- Specified by:
isShutdownin interfaceExecutorService
-
isTerminated
public boolean isTerminated()- Specified by:
isTerminatedin interfaceExecutorService
-