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
ConstructorDescriptionDeprecated.ConcurrentTaskScheduler
(Executor concurrentExecutor, ScheduledExecutorService scheduledExecutor) Create a new ConcurrentTaskScheduler, using the givenExecutor
andScheduledExecutorService
as delegates.ConcurrentTaskScheduler
(ScheduledExecutorService scheduledExecutor) Create a new ConcurrentTaskScheduler, using the givenScheduledExecutorService
as shared delegate. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Execute 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.void
Set the clock to use for scheduling purposes.void
setErrorHandler
(ErrorHandler errorHandler) Provide anErrorHandler
strategy.void
setScheduledExecutor
(ScheduledExecutorService scheduledExecutor) Specify theScheduledExecutorService
to 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 aRunnable
task for execution, receiving aListenableFuture
representing that task.<T> ListenableFuture<T>
submitListenable
(Callable<T> task) Submit aCallable
task for execution, receiving aListenableFuture
representing that task.Methods inherited from class org.springframework.scheduling.concurrent.ConcurrentTaskExecutor
execute, getConcurrentExecutor, setConcurrentExecutor, setTaskDecorator
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.core.task.AsyncTaskExecutor
submitCompletable, submitCompletable
Methods inherited from interface org.springframework.scheduling.SchedulingTaskExecutor
prefersShortLivedTasks
Methods 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 givenScheduledExecutorService
as shared delegate.Autodetects a JSR-236
ManagedScheduledExecutorService
in order to use it for trigger-based scheduling if possible, instead of Spring's local trigger management.- Parameters:
scheduledExecutor
- theScheduledExecutorService
to delegate to forSchedulingTaskExecutor
as well asTaskScheduler
invocations
-
ConcurrentTaskScheduler
public ConcurrentTaskScheduler(Executor concurrentExecutor, ScheduledExecutorService scheduledExecutor) Create a new ConcurrentTaskScheduler, using the givenExecutor
andScheduledExecutorService
as delegates.Autodetects a JSR-236
ManagedScheduledExecutorService
in order to use it for trigger-based scheduling if possible, instead of Spring's local trigger management.- Parameters:
concurrentExecutor
- theExecutor
to delegate to forSchedulingTaskExecutor
invocationsscheduledExecutor
- theScheduledExecutorService
to delegate to forTaskScheduler
invocations
-
-
Method Details
-
setScheduledExecutor
Specify theScheduledExecutorService
to delegate to.Autodetects a JSR-236
ManagedScheduledExecutorService
in order to use it for trigger-based scheduling if possible, instead of Spring's local trigger management.Note: This will only apply to
TaskScheduler
invocations. If you want the given executor to apply toSchedulingTaskExecutor
invocations as well, pass the same executor reference toConcurrentTaskExecutor.setConcurrentExecutor(java.util.concurrent.Executor)
. -
setErrorHandler
Provide anErrorHandler
strategy. -
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:TaskScheduler
Return the clock to use for scheduling purposes.- Specified by:
getClock
in interfaceTaskScheduler
- See Also:
-
execute
Description copied from interface:TaskExecutor
Execute 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:
execute
in interfaceExecutor
- Specified by:
execute
in interfaceTaskExecutor
- Overrides:
execute
in classConcurrentTaskExecutor
- Parameters:
task
- theRunnable
to execute (nevernull
)
-
submit
Description copied from interface:AsyncTaskExecutor
Submit a Runnable task for execution, receiving a Future representing that task. The Future will return anull
result upon completion.As of 6.1, this method comes with a default implementation that delegates to
TaskExecutor.execute(Runnable)
.- Specified by:
submit
in interfaceAsyncTaskExecutor
- Overrides:
submit
in classConcurrentTaskExecutor
- Parameters:
task
- theRunnable
to execute (nevernull
)- Returns:
- a Future representing pending completion of the task
-
submit
Description copied from interface:AsyncTaskExecutor
Submit 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:
submit
in interfaceAsyncTaskExecutor
- Overrides:
submit
in classConcurrentTaskExecutor
- Parameters:
task
- theCallable
to execute (nevernull
)- Returns:
- a Future representing pending completion of the task
-
submitListenable
Description copied from interface:AsyncListenableTaskExecutor
Submit aRunnable
task for execution, receiving aListenableFuture
representing that task. The Future will return anull
result upon completion.- Specified by:
submitListenable
in interfaceAsyncListenableTaskExecutor
- Overrides:
submitListenable
in classConcurrentTaskExecutor
- Parameters:
task
- theRunnable
to execute (nevernull
)- Returns:
- a
ListenableFuture
representing pending completion of the task
-
submitListenable
Description copied from interface:AsyncListenableTaskExecutor
Submit aCallable
task for execution, receiving aListenableFuture
representing that task. The Future will return the Callable's result upon completion.- Specified by:
submitListenable
in interfaceAsyncListenableTaskExecutor
- Overrides:
submitListenable
in classConcurrentTaskExecutor
- Parameters:
task
- theCallable
to execute (nevernull
)- Returns:
- a
ListenableFuture
representing pending completion of the task
-
schedule
Description copied from interface:TaskScheduler
Schedule the givenRunnable
, invoking it whenever the trigger indicates a next execution time.Execution will end once the scheduler shuts down or the returned
ScheduledFuture
gets cancelled.- Specified by:
schedule
in interfaceTaskScheduler
- Parameters:
task
- the Runnable to execute whenever the trigger firestrigger
- an implementation of theTrigger
interface, e.g. aCronTrigger
object wrapping a cron expression- Returns:
- a
ScheduledFuture
representing pending execution of the task, ornull
if the given Trigger object never fires (i.e. returnsnull
fromTrigger.nextExecution(org.springframework.scheduling.TriggerContext)
) - See Also:
-
schedule
Description copied from interface:TaskScheduler
Schedule the givenRunnable
, invoking it at the specified execution time.Execution will end once the scheduler shuts down or the returned
ScheduledFuture
gets cancelled.- Specified by:
schedule
in 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
ScheduledFuture
representing pending execution of the task
-
scheduleAtFixedRate
Description copied from interface:TaskScheduler
Schedule 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
ScheduledFuture
gets cancelled.- Specified by:
scheduleAtFixedRate
in 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
ScheduledFuture
representing pending execution of the task
-
scheduleAtFixedRate
Description copied from interface:TaskScheduler
Schedule 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
ScheduledFuture
gets cancelled.- Specified by:
scheduleAtFixedRate
in interfaceTaskScheduler
- Parameters:
task
- the Runnable to execute whenever the trigger firesperiod
- the interval between successive executions of the task- Returns:
- a
ScheduledFuture
representing pending execution of the task
-
scheduleWithFixedDelay
Description copied from interface:TaskScheduler
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.Execution will end once the scheduler shuts down or the returned
ScheduledFuture
gets cancelled.- Specified by:
scheduleWithFixedDelay
in 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
ScheduledFuture
representing pending execution of the task
-
scheduleWithFixedDelay
Description copied from interface:TaskScheduler
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.Execution will end once the scheduler shuts down or the returned
ScheduledFuture
gets cancelled.- Specified by:
scheduleWithFixedDelay
in 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
ScheduledFuture
representing pending execution of the task
-
ConcurrentTaskScheduler(ScheduledExecutorService)
with an externally provided Executor