Package org.springframework.scheduling

# Interface TaskScheduler

All Known Implementing Classes:
  `ConcurrentTaskScheduler`, `DefaultManagedTaskScheduler`, `NoOpTaskScheduler`, `SimpleAsyncTaskScheduler`, `TaskSchedulerRouter`, `ThreadPoolTaskScheduler`

public interface TaskScheduler
Task scheduler interface that abstracts the scheduling of `Runnables` based on different kinds of triggers.

This interface is separate from `SchedulingTaskExecutor` since it usually represents a different kind of backend, i.e. a thread pool with different characteristics and capabilities. Implementations may implement both interfaces if they can handle both kinds of execution characteristics.

The 'default' implementation is `ThreadPoolTaskScheduler`, wrapping a native `ScheduledExecutorService` and adding extended trigger capabilities.

This interface is roughly equivalent to a JSR-236 `ManagedScheduledExecutorService` as supported in Jakarta EE environments but aligned with Spring's `TaskExecutor` model.

Since:
  3.0
Author:
  Juergen Hoeller
See Also:
  - `TaskExecutor`
  - `ScheduledExecutorService`
  - `ThreadPoolTaskScheduler`

## Method Summary

Modifier and Type
Method
Description
`default Clock`
`getClock()`
Return the clock to use for scheduling purposes.
`ScheduledFuture<?>`
`schedule(Runnable task, Instant startTime)`
Schedule the given `Runnable`, invoking it at the specified execution time.
`default ScheduledFuture<?>`
`schedule(Runnable task, Date startTime)`
Deprecated.
as of 6.0, in favor of `schedule(Runnable, Instant)`
`ScheduledFuture<?>`
`schedule(Runnable task, Trigger trigger)`
Schedule the given `Runnable`, invoking it whenever the trigger indicates a next execution time.
`default ScheduledFuture<?>`
`scheduleAtFixedRate(Runnable task, long period)`
Deprecated.
as of 6.0, in favor of `scheduleAtFixedRate(Runnable, Duration)`
`ScheduledFuture<?>`
`scheduleAtFixedRate(Runnable task, Duration period)`
Schedule the given `Runnable`, starting as soon as possible and invoking it with the given period.
`ScheduledFuture<?>`
`scheduleAtFixedRate(Runnable task, Instant startTime, Duration period)`
Schedule the given `Runnable`, invoking it at the specified execution time and subsequently with the given period.
`default ScheduledFuture<?>`
`scheduleAtFixedRate(Runnable task, Date startTime, long period)`
Deprecated.
as of 6.0, in favor of `scheduleAtFixedRate(Runnable, Instant, Duration)`
`default ScheduledFuture<?>`
`scheduleWithFixedDelay(Runnable task, long delay)`
Deprecated.
as of 6.0, in favor of `scheduleWithFixedDelay(Runnable, Duration)`
`ScheduledFuture<?>`
`scheduleWithFixedDelay(Runnable task, Duration 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.
`ScheduledFuture<?>`
`scheduleWithFixedDelay(Runnable task, Instant startTime, Duration 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.
`default ScheduledFuture<?>`
`scheduleWithFixedDelay(Runnable task, Date startTime, long delay)`
Deprecated.
as of 6.0, in favor of `scheduleWithFixedDelay(Runnable, Instant, Duration)`

## Method Details

### getClock

default Clock getClock()
Return the clock to use for scheduling purposes.

Since:
  5.3
See Also:
  - `Clock.systemDefaultZone()`

### schedule

@Nullable ScheduledFuture<?> schedule(Runnable task, Trigger trigger)
Schedule the given `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.

Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `trigger` - an implementation of the `Trigger` interface, for example, a `CronTrigger` object wrapping a cron expression
Returns:
  a `ScheduledFuture` representing pending execution of the task, or `null` if the given Trigger object never fires (i.e. returns `null` from `Trigger.nextExecution(org.springframework.scheduling.TriggerContext)`)
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)
See Also:
  - `CronTrigger`

### schedule

ScheduledFuture<?> schedule(Runnable task, Instant startTime)
Schedule the given `Runnable`, invoking it at the specified execution time.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

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 `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)
Since:
  5.0

### schedule

@Deprecated(since="6.0") default ScheduledFuture<?> schedule(Runnable task, Date startTime)
Deprecated.
as of 6.0, in favor of `schedule(Runnable, Instant)`
Schedule the given `Runnable`, invoking it at the specified execution time.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

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 `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)

### scheduleAtFixedRate

ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Instant startTime, Duration period)
Schedule the given `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.

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 `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)
Since:
  5.0

### scheduleAtFixedRate

@Deprecated(since="6.0") default ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Date startTime, long period)
Deprecated.
as of 6.0, in favor of `scheduleAtFixedRate(Runnable, Instant, Duration)`
Schedule the given `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.

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 (in milliseconds)
Returns:
  a `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)

### scheduleAtFixedRate

ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Duration period)
Schedule the given `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.

Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `period` - the interval between successive executions of the task
Returns:
  a `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)
Since:
  5.0

### scheduleAtFixedRate

@Deprecated(since="6.0") default ScheduledFuture<?> scheduleAtFixedRate(Runnable task, long period)
Deprecated.
as of 6.0, in favor of `scheduleAtFixedRate(Runnable, Duration)`
Schedule the given `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.

Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `period` - the interval between successive executions of the task (in milliseconds)
Returns:
  a `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)

### scheduleWithFixedDelay

ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Instant startTime, Duration 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.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

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 `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)
Since:
  5.0

### scheduleWithFixedDelay

@Deprecated(since="6.0") default ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Date startTime, long delay)
Deprecated.
as of 6.0, in favor of `scheduleWithFixedDelay(Runnable, Instant, Duration)`
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.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

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 (in milliseconds)
Returns:
  a `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)

### scheduleWithFixedDelay

ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Duration 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.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

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 `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)
Since:
  5.0

### scheduleWithFixedDelay

@Deprecated(since="6.0") default ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, long delay)
Deprecated.
as of 6.0, in favor of `scheduleWithFixedDelay(Runnable, Duration)`
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.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

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 (in milliseconds)
Returns:
  a `ScheduledFuture` representing pending execution of the task
Throws:
  `org.springframework.core.task.TaskRejectedException` - if the given task was not accepted for internal reasons (for example, a pool overload handling policy or a pool shutdown in progress)