Class ConcurrentTaskScheduler
- java.lang.Object
- org.springframework.scheduling.concurrent.ConcurrentTaskExecutor
- org.springframework.scheduling.concurrent.ConcurrentTaskScheduler
- All Implemented Interfaces:
Executor,AsyncListenableTaskExecutor,AsyncTaskExecutor,TaskExecutor,SchedulingTaskExecutor,TaskScheduler
- Direct Known Subclasses:
DefaultManagedTaskScheduler
public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements TaskScheduler
Adapter that takes ajava.util.concurrent.ScheduledExecutorServiceand exposes a SpringTaskSchedulerfor it. ExtendsConcurrentTaskExecutorin order to implement theSchedulingTaskExecutorinterface as well.Autodetects a JSR-236
ManagedScheduledExecutorServicein order to use it for trigger-based scheduling if possible, instead of Spring's local trigger management which ends up delegating to regular delay-based scheduling against thejava.util.concurrent.ScheduledExecutorServiceAPI. For JSR-236 style lookup in a Java EE 7 environment, consider usingDefaultManagedTaskScheduler.Note that there is a pre-built
ThreadPoolTaskSchedulerthat allows for defining aScheduledThreadPoolExecutorin bean style, exposing it as a SpringTaskSchedulerdirectly. This is a convenient alternative to a raw ScheduledThreadPoolExecutor definition with a separate definition of the present adapter class.- Since:
- 3.0
- Author:
- Juergen Hoeller, Mark Fisher
- See Also:
ScheduledExecutorService,ScheduledThreadPoolExecutor,Executors,DefaultManagedTaskScheduler,ThreadPoolTaskScheduler
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.scheduling.concurrent.ConcurrentTaskExecutor
ConcurrentTaskExecutor.ManagedTaskBuilder
Field Summary
Fields inherited from interface org.springframework.core.task.AsyncTaskExecutor
TIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE
Constructor Summary
Constructors Constructor Description ConcurrentTaskScheduler()Create a new ConcurrentTaskScheduler, using a single thread executor as default.ConcurrentTaskScheduler(Executor concurrentExecutor, ScheduledExecutorService scheduledExecutor)Create a new ConcurrentTaskScheduler, using the givenExecutorandScheduledExecutorServiceas delegates.ConcurrentTaskScheduler(ScheduledExecutorService scheduledExecutor)Create a new ConcurrentTaskScheduler, using the givenScheduledExecutorServiceas shared delegate.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ScheduledFuture<?>schedule(Runnable task, Date startTime)Schedule the givenRunnable, invoking it at the specified execution time.ScheduledFuture<?>schedule(Runnable task, Trigger trigger)Schedule the givenRunnable, invoking it whenever the trigger indicates a next execution time.ScheduledFuture<?>scheduleAtFixedRate(Runnable task, long period)Schedule the givenRunnable, starting as soon as possible and invoking it with the given period.ScheduledFuture<?>scheduleAtFixedRate(Runnable task, Date startTime, long period)Schedule the givenRunnable, invoking it at the specified execution time and subsequently with the given period.ScheduledFuture<?>scheduleWithFixedDelay(Runnable task, long delay)Schedule the givenRunnable, starting as soon as possible and invoking it with the given delay between the completion of one execution and the start of the next.ScheduledFuture<?>scheduleWithFixedDelay(Runnable task, Date startTime, long delay)Schedule the givenRunnable, 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.voidsetErrorHandler(ErrorHandler errorHandler)Provide anErrorHandlerstrategy.voidsetScheduledExecutor(ScheduledExecutorService scheduledExecutor)Specify theScheduledExecutorServiceto delegate to.Methods inherited from class org.springframework.scheduling.concurrent.ConcurrentTaskExecutor
execute, execute, getConcurrentExecutor, prefersShortLivedTasks, setConcurrentExecutor, setTaskDecorator, submit, submit, submitListenable, submitListenable
Constructor Detail
ConcurrentTaskScheduler
public ConcurrentTaskScheduler()
Create a new ConcurrentTaskScheduler, using a single thread executor as default.
ConcurrentTaskScheduler
public ConcurrentTaskScheduler(ScheduledExecutorService scheduledExecutor)
Create a new ConcurrentTaskScheduler, using the givenScheduledExecutorServiceas shared delegate.Autodetects a JSR-236
ManagedScheduledExecutorServicein order to use it for trigger-based scheduling if possible, instead of Spring's local trigger management.- Parameters:
scheduledExecutor- theScheduledExecutorServiceto delegate to forSchedulingTaskExecutoras well asTaskSchedulerinvocations
ConcurrentTaskScheduler
public ConcurrentTaskScheduler(Executor concurrentExecutor, ScheduledExecutorService scheduledExecutor)
Create a new ConcurrentTaskScheduler, using the givenExecutorandScheduledExecutorServiceas delegates.Autodetects a JSR-236
ManagedScheduledExecutorServicein order to use it for trigger-based scheduling if possible, instead of Spring's local trigger management.- Parameters:
concurrentExecutor- theExecutorto delegate to forSchedulingTaskExecutorinvocationsscheduledExecutor- theScheduledExecutorServiceto delegate to forTaskSchedulerinvocations
Method Detail
setScheduledExecutor
public final void setScheduledExecutor(ScheduledExecutorService scheduledExecutor)
Specify theScheduledExecutorServiceto delegate to.Autodetects a JSR-236
ManagedScheduledExecutorServicein order to use it for trigger-based scheduling if possible, instead of Spring's local trigger management.Note: This will only apply to
TaskSchedulerinvocations. If you want the given executor to apply toSchedulingTaskExecutorinvocations as well, pass the same executor reference toConcurrentTaskExecutor.setConcurrentExecutor(java.util.concurrent.Executor).
setErrorHandler
public void setErrorHandler(ErrorHandler errorHandler)
Provide anErrorHandlerstrategy.
schedule
public ScheduledFuture<?> schedule(Runnable task, Trigger trigger)
Description copied from interface:TaskSchedulerSchedule the givenRunnable, invoking it whenever the trigger indicates a next execution time.Execution will end once the scheduler shuts down or the returned
ScheduledFuturegets cancelled.- Specified by:
schedulein interfaceTaskScheduler- Parameters:
task- the Runnable to execute whenever the trigger firestrigger- an implementation of theTriggerinterface, e.g. aCronTriggerobject wrapping a cron expression- Returns:
- a
ScheduledFuturerepresenting pending completion of the task, ornullif the given Trigger object never fires (i.e. returnsnullfromTrigger.nextExecutionTime(org.springframework.scheduling.TriggerContext)) - See Also:
CronTrigger
schedule
public ScheduledFuture<?> schedule(Runnable task, Date startTime)
Description copied from interface:TaskSchedulerSchedule the givenRunnable, invoking it at the specified execution time.Execution will end once the scheduler shuts down or the returned
ScheduledFuturegets cancelled.- Specified by:
schedulein interfaceTaskScheduler- Parameters:
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)- Returns:
- a
ScheduledFuturerepresenting pending completion of the task
scheduleAtFixedRate
public ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Date startTime, long period)
Description copied from interface:TaskSchedulerSchedule the givenRunnable, invoking it at the specified execution time and subsequently with the given period.Execution will end once the scheduler shuts down or the returned
ScheduledFuturegets cancelled.- Specified by:
scheduleAtFixedRatein interfaceTaskScheduler- Parameters:
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)- Returns:
- a
ScheduledFuturerepresenting pending completion of the task
scheduleAtFixedRate
public ScheduledFuture<?> scheduleAtFixedRate(Runnable task, long period)
Description copied from interface:TaskSchedulerSchedule the givenRunnable, starting as soon as possible and invoking it with the given period.Execution will end once the scheduler shuts down or the returned
ScheduledFuturegets cancelled.- Specified by:
scheduleAtFixedRatein interfaceTaskScheduler- Parameters:
task- the Runnable to execute whenever the trigger firesperiod- the interval between successive executions of the task (in milliseconds)- Returns:
- a
ScheduledFuturerepresenting pending completion of the task
scheduleWithFixedDelay
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Date startTime, long delay)
Description copied from interface:TaskSchedulerSchedule the givenRunnable, 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
ScheduledFuturegets cancelled.- Specified by:
scheduleWithFixedDelayin interfaceTaskScheduler- Parameters:
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)- Returns:
- a
ScheduledFuturerepresenting pending completion of the task
scheduleWithFixedDelay
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, long delay)
Description copied from interface:TaskSchedulerSchedule the givenRunnable, 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
ScheduledFuturegets cancelled.- Specified by:
scheduleWithFixedDelayin interfaceTaskScheduler- Parameters:
task- the Runnable to execute whenever the trigger firesdelay- the interval between successive executions of the task (in milliseconds)- Returns:
- a
ScheduledFuturerepresenting pending completion of the task