|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.util.CustomizableThreadCreator org.springframework.scheduling.concurrent.CustomizableThreadFactory org.springframework.scheduling.concurrent.ExecutorConfigurationSupport org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
public class ThreadPoolTaskScheduler
Implementation of Spring's TaskScheduler
interface, wrapping
a native ScheduledThreadPoolExecutor
.
setPoolSize(int)
,
ExecutorConfigurationSupport.setThreadFactory(java.util.concurrent.ThreadFactory)
,
setErrorHandler(org.springframework.util.ErrorHandler)
,
Serialized FormNested Class Summary | |
---|---|
private static class |
ThreadPoolTaskScheduler.DelegatingErrorHandlingCallable<V>
|
Field Summary | |
---|---|
private ErrorHandler |
errorHandler
|
private int |
poolSize
|
private java.util.concurrent.ScheduledExecutorService |
scheduledExecutor
|
Fields inherited from class org.springframework.scheduling.concurrent.ExecutorConfigurationSupport |
---|
logger |
Fields inherited from interface org.springframework.core.task.AsyncTaskExecutor |
---|
TIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE |
Constructor Summary | |
---|---|
ThreadPoolTaskScheduler()
|
Method Summary | ||
---|---|---|
protected java.util.concurrent.ScheduledExecutorService |
createExecutor(int poolSize,
java.util.concurrent.ThreadFactory threadFactory,
java.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler)
Create a new ScheduledExecutorService instance. |
|
private java.lang.Runnable |
errorHandlingTask(java.lang.Runnable task,
boolean isRepeatingTask)
|
|
void |
execute(java.lang.Runnable task)
Execute the given task . |
|
void |
execute(java.lang.Runnable task,
long startTimeout)
Execute the given task . |
|
java.util.concurrent.ScheduledExecutorService |
getScheduledExecutor()
Return the underlying ScheduledExecutorService for native access. |
|
protected java.util.concurrent.ExecutorService |
initializeExecutor(java.util.concurrent.ThreadFactory threadFactory,
java.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler)
Create the target ExecutorService instance. |
|
boolean |
prefersShortLivedTasks()
Does this TaskExecutor prefer short-lived tasks over
long-lived tasks? |
|
java.util.concurrent.ScheduledFuture |
schedule(java.lang.Runnable task,
java.util.Date startTime)
Schedule the given Runnable , invoking it at the specified execution time. |
|
java.util.concurrent.ScheduledFuture |
schedule(java.lang.Runnable task,
Trigger trigger)
Schedule the given Runnable , invoking it whenever the trigger
indicates a next execution time. |
|
java.util.concurrent.ScheduledFuture |
scheduleAtFixedRate(java.lang.Runnable task,
java.util.Date startTime,
long period)
Schedule the given Runnable , invoking it at the specified execution time
and subsequently with the given period. |
|
java.util.concurrent.ScheduledFuture |
scheduleAtFixedRate(java.lang.Runnable task,
long period)
Schedule the given Runnable , starting as soon as possible and
invoking it with the given period. |
|
java.util.concurrent.ScheduledFuture |
scheduleWithFixedDelay(java.lang.Runnable task,
java.util.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. |
|
java.util.concurrent.ScheduledFuture |
scheduleWithFixedDelay(java.lang.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. |
|
|
submit(java.util.concurrent.Callable<T> task)
Submit a Callable task for execution, receiving a Future representing that task. |
|
java.util.concurrent.Future<?> |
submit(java.lang.Runnable task)
Submit a Runnable task for execution, receiving a Future representing that task. |
Methods inherited from class org.springframework.scheduling.concurrent.ExecutorConfigurationSupport |
---|
afterPropertiesSet, destroy, initialize, setBeanName, setRejectedExecutionHandler, setThreadFactory, setThreadNamePrefix, setWaitForTasksToCompleteOnShutdown, shutdown |
Methods inherited from class org.springframework.scheduling.concurrent.CustomizableThreadFactory |
---|
newThread |
Methods inherited from class org.springframework.util.CustomizableThreadCreator |
---|
createThread, getDefaultThreadNamePrefix, getThreadGroup, getThreadNamePrefix, getThreadPriority, isDaemon, nextThreadName, setDaemon, setThreadGroup, setThreadGroupName, setThreadPriority |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private volatile int poolSize
private volatile java.util.concurrent.ScheduledExecutorService scheduledExecutor
private volatile ErrorHandler errorHandler
Constructor Detail |
---|
public ThreadPoolTaskScheduler()
Method Detail |
---|
public void setPoolSize(int poolSize)
public void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler
strategy.
protected java.util.concurrent.ExecutorService initializeExecutor(java.util.concurrent.ThreadFactory threadFactory, java.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler)
ExecutorConfigurationSupport
ExecutorService
instance.
Called by afterPropertiesSet
.
initializeExecutor
in class ExecutorConfigurationSupport
threadFactory
- the ThreadFactory to userejectedExecutionHandler
- the RejectedExecutionHandler to use
ExecutorConfigurationSupport.afterPropertiesSet()
protected java.util.concurrent.ScheduledExecutorService createExecutor(int poolSize, java.util.concurrent.ThreadFactory threadFactory, java.util.concurrent.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 use
ExecutorConfigurationSupport.afterPropertiesSet()
,
ScheduledThreadPoolExecutor
public java.util.concurrent.ScheduledExecutorService getScheduledExecutor() throws java.lang.IllegalStateException
null
)
java.lang.IllegalStateException
- if the ThreadPoolTaskScheduler hasn't been initialized yetpublic void execute(java.lang.Runnable task)
TaskExecutor
task
.
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 java.util.concurrent.Executor
execute
in interface TaskExecutor
task
- the Runnable
to execute (never null
)public void execute(java.lang.Runnable task, long startTimeout)
AsyncTaskExecutor
task
.
execute
in interface AsyncTaskExecutor
task
- 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 java.util.concurrent.Future<?> submit(java.lang.Runnable task)
AsyncTaskExecutor
null
result upon completion.
submit
in interface AsyncTaskExecutor
task
- the Runnable
to execute (never null
)
public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
AsyncTaskExecutor
submit
in interface AsyncTaskExecutor
task
- the Callable
to execute (never null
)
public boolean prefersShortLivedTasks()
SchedulingTaskExecutor
TaskExecutor
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 SchedulingTaskExecutor
true
if this TaskExecutor
prefers
short-lived taskspublic java.util.concurrent.ScheduledFuture schedule(java.lang.Runnable task, Trigger trigger)
TaskScheduler
Runnable
, 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 TaskScheduler
task
- the Runnable to execute whenever the trigger firestrigger
- an implementation of the Trigger
interface,
e.g. a CronTrigger
object
wrapping a cron expression
ScheduledFuture
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)
)CronTrigger
public java.util.concurrent.ScheduledFuture schedule(java.lang.Runnable task, java.util.Date startTime)
TaskScheduler
Runnable
, invoking it at the specified execution time.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture
gets cancelled.
schedule
in interface TaskScheduler
task
- 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 java.util.concurrent.ScheduledFuture scheduleAtFixedRate(java.lang.Runnable task, java.util.Date startTime, long period)
TaskScheduler
Runnable
, 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 TaskScheduler
task
- 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 java.util.concurrent.ScheduledFuture scheduleAtFixedRate(java.lang.Runnable task, long period)
TaskScheduler
Runnable
, 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 TaskScheduler
task
- 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 java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(java.lang.Runnable task, java.util.Date startTime, long delay)
TaskScheduler
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.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture
gets cancelled.
scheduleWithFixedDelay
in interface TaskScheduler
task
- 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 java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(java.lang.Runnable task, long delay)
TaskScheduler
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.
Execution will end once the scheduler shuts down or the returned
ScheduledFuture
gets cancelled.
scheduleWithFixedDelay
in interface TaskScheduler
task
- the Runnable to execute whenever the trigger firesdelay
- the interval between successive executions of the task (in milliseconds)
ScheduledFuture
representing pending completion of the taskprivate java.lang.Runnable errorHandlingTask(java.lang.Runnable task, boolean isRepeatingTask)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |