public class ThreadPoolTaskScheduler extends ExecutorConfigurationSupport implements TaskScheduler, SchedulingTaskExecutor
TaskScheduler interface, wrapping
a native ScheduledThreadPoolExecutor.setPoolSize(int),
ExecutorConfigurationSupport.setThreadFactory(java.util.concurrent.ThreadFactory),
setErrorHandler(org.springframework.util.ErrorHandler),
Serialized FormloggerTIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE| Constructor and Description |
|---|
ThreadPoolTaskScheduler() |
| Modifier and Type | Method and Description |
|---|---|
protected ScheduledExecutorService |
createExecutor(int poolSize,
ThreadFactory threadFactory,
RejectedExecutionHandler rejectedExecutionHandler)
Create a new
ScheduledExecutorService instance. |
void |
execute(Runnable task)
Execute the given
task. |
void |
execute(Runnable task,
long startTimeout)
Execute the given
task. |
ScheduledExecutorService |
getScheduledExecutor()
Return the underlying ScheduledExecutorService for native access.
|
protected ExecutorService |
initializeExecutor(ThreadFactory threadFactory,
RejectedExecutionHandler rejectedExecutionHandler)
Create the target
ExecutorService instance. |
boolean |
prefersShortLivedTasks()
Does this
TaskExecutor prefer short-lived tasks over
long-lived tasks? |
ScheduledFuture |
schedule(Runnable task,
Date startTime)
Schedule the given
Runnable, invoking it at the specified execution time. |
ScheduledFuture |
schedule(Runnable task,
Trigger trigger)
Schedule the given
Runnable, invoking it whenever the trigger
indicates a next execution time. |
ScheduledFuture |
scheduleAtFixedRate(Runnable task,
Date startTime,
long period)
Schedule the given
Runnable, invoking it at the specified execution time
and subsequently with the given period. |
ScheduledFuture |
scheduleAtFixedRate(Runnable task,
long period)
Schedule the given
Runnable, starting as soon as possible and
invoking it with the given period. |
ScheduledFuture |
scheduleWithFixedDelay(Runnable task,
Date startTime,
long delay)
Schedule the given
Runnable, invoking it at the specified execution time
and subsequently with the given delay between the completion of one execution
and the start of the next. |
ScheduledFuture |
scheduleWithFixedDelay(Runnable task,
long delay)
Schedule the given
Runnable, starting as soon as possible and
invoking it with the given delay between the completion of one execution
and the start of the next. |
void |
setErrorHandler(ErrorHandler errorHandler)
Provide an
ErrorHandler strategy. |
void |
setPoolSize(int poolSize)
Set the ScheduledExecutorService's pool size.
|
<T> Future<T> |
submit(Callable<T> task)
Submit a Callable task for execution, receiving a Future representing that task.
|
Future<?> |
submit(Runnable task)
Submit a Runnable task for execution, receiving a Future representing that task.
|
afterPropertiesSet, destroy, initialize, setAwaitTerminationSeconds, setBeanName, setRejectedExecutionHandler, setThreadFactory, setThreadNamePrefix, setWaitForTasksToCompleteOnShutdown, shutdownnewThreadcreateThread, getDefaultThreadNamePrefix, getThreadGroup, getThreadNamePrefix, getThreadPriority, isDaemon, nextThreadName, setDaemon, setThreadGroup, setThreadGroupName, setThreadPrioritypublic void setPoolSize(int poolSize)
public void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler strategy.protected ExecutorService initializeExecutor(ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler)
ExecutorConfigurationSupportExecutorService instance.
Called by afterPropertiesSet.initializeExecutor in class ExecutorConfigurationSupportthreadFactory - the ThreadFactory to userejectedExecutionHandler - the RejectedExecutionHandler to useExecutorConfigurationSupport.afterPropertiesSet()protected ScheduledExecutorService createExecutor(int poolSize, ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler)
ScheduledExecutorService instance.
The default implementation creates a ScheduledThreadPoolExecutor.
Can be overridden in subclasses to provide custom ScheduledExecutorService instances.
poolSize - the specified pool sizethreadFactory - the ThreadFactory to userejectedExecutionHandler - the RejectedExecutionHandler to useExecutorConfigurationSupport.afterPropertiesSet(),
ScheduledThreadPoolExecutorpublic ScheduledExecutorService getScheduledExecutor() throws IllegalStateException
null)IllegalStateException - if the ThreadPoolTaskScheduler hasn't been initialized yetpublic void execute(Runnable task)
TaskExecutortask.
The call might return immediately if the implementation uses an asynchronous execution strategy, or might block in the case of synchronous execution.
execute in interface Executorexecute in interface TaskExecutortask - the Runnable to execute (never null)public void execute(Runnable task, long startTimeout)
AsyncTaskExecutortask.execute in interface AsyncTaskExecutortask - the Runnable to execute (never null)startTimeout - the time duration (milliseconds) within which the task is
supposed to start. This is intended as a hint to the executor, allowing for
preferred handling of immediate tasks. Typical values are AsyncTaskExecutor.TIMEOUT_IMMEDIATE
or AsyncTaskExecutor.TIMEOUT_INDEFINITE (the default as used by TaskExecutor.execute(Runnable)).public Future<?> submit(Runnable task)
AsyncTaskExecutornull result upon completion.submit in interface AsyncTaskExecutortask - the Runnable to execute (never null)public <T> Future<T> submit(Callable<T> task)
AsyncTaskExecutorsubmit in interface AsyncTaskExecutortask - the Callable to execute (never null)public boolean prefersShortLivedTasks()
SchedulingTaskExecutorTaskExecutor prefer short-lived tasks over
long-lived tasks?
A SchedulingTaskExecutor implementation can indicate
whether it prefers submitted tasks to perform as little work as they
can within a single task execution. For example, submitted tasks
might break a repeated loop into individual subtasks which submit a
follow-up task afterwards (if feasible).
This should be considered a hint. Of course TaskExecutor
clients are free to ignore this flag and hence the
SchedulingTaskExecutor interface overall. However, thread
pools will usually indicated a preference for short-lived tasks, to be
able to perform more fine-grained scheduling.
prefersShortLivedTasks in interface SchedulingTaskExecutortrue if this TaskExecutor prefers
short-lived taskspublic ScheduledFuture schedule(Runnable task, Trigger trigger)
TaskSchedulerRunnable, invoking it whenever the trigger
indicates a next execution time.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture gets cancelled.
schedule in interface TaskSchedulertask - the Runnable to execute whenever the trigger firestrigger - an implementation of the Trigger interface,
e.g. a CronTrigger object
wrapping a cron expressionScheduledFuture representing pending completion of the task,
or null if the given Trigger object never fires (i.e. returns
null from Trigger.nextExecutionTime(org.springframework.scheduling.TriggerContext))CronTriggerpublic ScheduledFuture schedule(Runnable task, Date startTime)
TaskSchedulerRunnable, invoking it at the specified execution time.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture gets cancelled.
schedule in interface TaskSchedulertask - the Runnable to execute whenever the trigger firesstartTime - the desired execution time for the task
(if this is in the past, the task will be executed immediately, i.e. as soon as possible)ScheduledFuture representing pending completion of the taskpublic ScheduledFuture scheduleAtFixedRate(Runnable task, Date startTime, long period)
TaskSchedulerRunnable, invoking it at the specified execution time
and subsequently with the given period.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture gets cancelled.
scheduleAtFixedRate in interface TaskSchedulertask - the Runnable to execute whenever the trigger firesstartTime - the desired first execution time for the task
(if this is in the past, the task will be executed immediately, i.e. as soon as possible)period - the interval between successive executions of the task (in milliseconds)ScheduledFuture representing pending completion of the taskpublic ScheduledFuture scheduleAtFixedRate(Runnable task, long period)
TaskSchedulerRunnable, starting as soon as possible and
invoking it with the given period.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture gets cancelled.
scheduleAtFixedRate in interface TaskSchedulertask - the Runnable to execute whenever the trigger firesperiod - the interval between successive executions of the task (in milliseconds)ScheduledFuture representing pending completion of the taskpublic ScheduledFuture scheduleWithFixedDelay(Runnable task, Date startTime, long delay)
TaskSchedulerRunnable, invoking it at the specified execution time
and subsequently with the given delay between the completion of one execution
and the start of the next.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture gets cancelled.
scheduleWithFixedDelay in interface TaskSchedulertask - the Runnable to execute whenever the trigger firesstartTime - the desired first execution time for the task
(if this is in the past, the task will be executed immediately, i.e. as soon as possible)delay - the delay between the completion of one execution and the start
of the next (in milliseconds)ScheduledFuture representing pending completion of the taskpublic ScheduledFuture scheduleWithFixedDelay(Runnable task, long delay)
TaskSchedulerRunnable, starting as soon as possible and
invoking it with the given delay between the completion of one execution
and the start of the next.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture gets cancelled.
scheduleWithFixedDelay in interface TaskSchedulertask - the Runnable to execute whenever the trigger firesdelay - the interval between successive executions of the task (in milliseconds)ScheduledFuture representing pending completion of the task