Class ConcurrentTaskScheduler
- All Implemented Interfaces:
- Executor,- AsyncListenableTaskExecutor,- AsyncTaskExecutor,- TaskExecutor,- SchedulingTaskExecutor,- TaskScheduler
- Direct Known Subclasses:
- DefaultManagedTaskScheduler
java.util.concurrent.ScheduledExecutorService and
 exposes a Spring TaskScheduler for it.
 Extends ConcurrentTaskExecutor in order to implement the
 SchedulingTaskExecutor interface as well.
 Autodetects a JSR-236 ManagedScheduledExecutorService
 in 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 the java.util.concurrent.ScheduledExecutorService API. For JSR-236 style
 lookup in a Jakarta EE environment, consider using DefaultManagedTaskScheduler.
 
Note that there is a pre-built ThreadPoolTaskScheduler that allows for
 defining a ScheduledThreadPoolExecutor in bean style,
 exposing it as a Spring TaskScheduler directly.
 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, Arjen Poutsma
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.scheduling.concurrent.ConcurrentTaskExecutorConcurrentTaskExecutor.ManagedTaskBuilder
- 
Field SummaryFields inherited from interface org.springframework.core.task.AsyncTaskExecutorTIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE
- 
Constructor SummaryConstructorsConstructorDescriptionDeprecated.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 SummaryModifier and TypeMethodDescriptiongetClock()Return the clock to use for scheduling purposes.Schedule the givenRunnable, invoking it at the specified execution time.Schedule the givenRunnable, invoking it whenever the trigger indicates a next execution time.scheduleAtFixedRate(Runnable task, Duration period) Schedule the givenRunnable, starting as soon as possible and invoking it with the given period.scheduleAtFixedRate(Runnable task, Instant startTime, Duration period) Schedule the givenRunnable, invoking it at the specified execution time and subsequently with the given period.scheduleWithFixedDelay(Runnable task, Duration 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.scheduleWithFixedDelay(Runnable task, Instant startTime, Duration 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.voidSet the clock to use for scheduling purposes.voidsetErrorHandler(ErrorHandler errorHandler) Provide anErrorHandlerstrategy.voidsetScheduledExecutor(ScheduledExecutorService scheduledExecutor) Specify theScheduledExecutorServiceto delegate to.Methods inherited from class org.springframework.scheduling.concurrent.ConcurrentTaskExecutorexecute, execute, getConcurrentExecutor, setConcurrentExecutor, setTaskDecorator, submit, submit, submitListenable, submitListenableMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.core.task.AsyncTaskExecutorsubmitCompletable, submitCompletableMethods inherited from interface org.springframework.scheduling.SchedulingTaskExecutorprefersShortLivedTasksMethods inherited from interface org.springframework.scheduling.TaskSchedulerschedule, scheduleAtFixedRate, scheduleAtFixedRate, scheduleWithFixedDelay, scheduleWithFixedDelay
- 
Constructor Details- 
ConcurrentTaskSchedulerDeprecated.in favor ofConcurrentTaskScheduler(ScheduledExecutorService)with an externally provided ExecutorCreate a new ConcurrentTaskScheduler, using a single thread executor as default.
- 
ConcurrentTaskSchedulerCreate 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- the- ScheduledExecutorServiceto delegate to for- SchedulingTaskExecutoras well as- TaskSchedulerinvocations
 
- 
ConcurrentTaskSchedulerpublic 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- the- Executorto delegate to for- SchedulingTaskExecutorinvocations
- scheduledExecutor- the- ScheduledExecutorServiceto delegate to for- TaskSchedulerinvocations
 
 
- 
- 
Method Details- 
setScheduledExecutorSpecify 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).
- 
setErrorHandlerProvide anErrorHandlerstrategy.
- 
setClockSet the clock to use for scheduling purposes.The default clock is the system clock for the default time zone. - Since:
- 5.3
- See Also:
 
- 
getClockDescription copied from interface:TaskSchedulerReturn the clock to use for scheduling purposes.- Specified by:
- getClockin interface- TaskScheduler
- See Also:
 
- 
scheduleDescription 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 interface- TaskScheduler
- Parameters:
- task- the Runnable to execute whenever the trigger fires
- trigger- an implementation of the- Triggerinterface, e.g. a- CronTriggerobject wrapping a cron expression
- Returns:
- a ScheduledFuturerepresenting pending execution of the task, ornullif the given Trigger object never fires (i.e. returnsnullfromTrigger.nextExecution(org.springframework.scheduling.TriggerContext))
- See Also:
 
- 
scheduleDescription 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 interface- TaskScheduler
- Parameters:
- task- the Runnable to execute whenever the trigger fires
- startTime- 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 execution of the task
 
- 
scheduleAtFixedRateDescription 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 interface- TaskScheduler
- Parameters:
- task- the Runnable to execute whenever the trigger fires
- startTime- 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
- Returns:
- a ScheduledFuturerepresenting pending execution of the task
 
- 
scheduleAtFixedRateDescription 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 interface- TaskScheduler
- Parameters:
- task- the Runnable to execute whenever the trigger fires
- period- the interval between successive executions of the task
- Returns:
- a ScheduledFuturerepresenting pending execution of the task
 
- 
scheduleWithFixedDelayDescription 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 interface- TaskScheduler
- Parameters:
- task- the Runnable to execute whenever the trigger fires
- startTime- 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
- Returns:
- a ScheduledFuturerepresenting pending execution of the task
 
- 
scheduleWithFixedDelayDescription 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 interface- TaskScheduler
- Parameters:
- task- the Runnable to execute whenever the trigger fires
- delay- the delay between the completion of one execution and the start of the next
- Returns:
- a ScheduledFuturerepresenting pending execution of the task
 
 
- 
ConcurrentTaskScheduler(ScheduledExecutorService)with an externally provided Executor