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 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
ConstructorsConstructorDescriptionDeprecated.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
Modifier and TypeMethodDescriptionvoidExecute the giventask.getClock()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.Future<?>Submit a Runnable task for execution, receiving a Future representing that task.<T> Future<T>Submit a Callable task for execution, receiving a Future representing that task.submitListenable(Runnable task) Submit aRunnabletask for execution, receiving aListenableFuturerepresenting that task.<T> ListenableFuture<T>submitListenable(Callable<T> task) Submit aCallabletask for execution, receiving aListenableFuturerepresenting that task.Methods inherited from class org.springframework.scheduling.concurrent.ConcurrentTaskExecutor
execute, getConcurrentExecutor, setConcurrentExecutor, setTaskDecoratorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.core.task.AsyncTaskExecutor
submitCompletable, submitCompletableMethods inherited from interface org.springframework.scheduling.SchedulingTaskExecutor
prefersShortLivedTasksMethods inherited from interface org.springframework.scheduling.TaskScheduler
schedule, scheduleAtFixedRate, scheduleAtFixedRate, scheduleWithFixedDelay, scheduleWithFixedDelay
-
Constructor Details
-
ConcurrentTaskScheduler
Deprecated.in favor ofConcurrentTaskScheduler(ScheduledExecutorService)with an externally provided ExecutorCreate a new ConcurrentTaskScheduler, using a single thread executor as default. -
ConcurrentTaskScheduler
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 Details
-
setScheduledExecutor
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
Provide anErrorHandlerstrategy. -
setClock
Set the clock to use for scheduling purposes.The default clock is the system clock for the default time zone.
- Since:
- 5.3
- See Also:
-
getClock
Description copied from interface:TaskSchedulerReturn the clock to use for scheduling purposes.- Specified by:
getClockin interfaceTaskScheduler- See Also:
-
execute
Description copied from interface:TaskExecutorExecute the giventask.The call might return immediately if the implementation uses an asynchronous execution strategy, or might block in the case of synchronous execution.
- Specified by:
executein interfaceExecutor- Specified by:
executein interfaceTaskExecutor- Overrides:
executein classConcurrentTaskExecutor- Parameters:
task- theRunnableto execute (nevernull)
-
submit
Description copied from interface:AsyncTaskExecutorSubmit a Runnable task for execution, receiving a Future representing that task. The Future will return anullresult upon completion.As of 6.1, this method comes with a default implementation that delegates to
TaskExecutor.execute(Runnable).- Specified by:
submitin interfaceAsyncTaskExecutor- Overrides:
submitin classConcurrentTaskExecutor- Parameters:
task- theRunnableto execute (nevernull)- Returns:
- a Future representing pending completion of the task
-
submit
Description copied from interface:AsyncTaskExecutorSubmit a Callable task for execution, receiving a Future representing that task. The Future will return the Callable's result upon completion.As of 6.1, this method comes with a default implementation that delegates to
TaskExecutor.execute(Runnable).- Specified by:
submitin interfaceAsyncTaskExecutor- Overrides:
submitin classConcurrentTaskExecutor- Parameters:
task- theCallableto execute (nevernull)- Returns:
- a Future representing pending completion of the task
-
submitListenable
Description copied from interface:AsyncListenableTaskExecutorSubmit aRunnabletask for execution, receiving aListenableFuturerepresenting that task. The Future will return anullresult upon completion.- Specified by:
submitListenablein interfaceAsyncListenableTaskExecutor- Overrides:
submitListenablein classConcurrentTaskExecutor- Parameters:
task- theRunnableto execute (nevernull)- Returns:
- a
ListenableFuturerepresenting pending completion of the task
-
submitListenable
Description copied from interface:AsyncListenableTaskExecutorSubmit aCallabletask for execution, receiving aListenableFuturerepresenting that task. The Future will return the Callable's result upon completion.- Specified by:
submitListenablein interfaceAsyncListenableTaskExecutor- Overrides:
submitListenablein classConcurrentTaskExecutor- Parameters:
task- theCallableto execute (nevernull)- Returns:
- a
ListenableFuturerepresenting pending completion of the task
-
schedule
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, for example, aCronTriggerobject 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:
-
schedule
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 execution of the task
-
scheduleAtFixedRate
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- Returns:
- a
ScheduledFuturerepresenting pending execution of the task
-
scheduleAtFixedRate
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- Returns:
- a
ScheduledFuturerepresenting pending execution of the task
-
scheduleWithFixedDelay
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- Returns:
- a
ScheduledFuturerepresenting pending execution of the task
-
scheduleWithFixedDelay
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 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