## org.springframework.core.task
Interface AsyncTaskExecutor

All Superinterfaces:
  Executor, TaskExecutor

All Known Subinterfaces:
  SchedulingTaskExecutor

All Known Implementing Classes:
  ConcurrentTaskExecutor, ConcurrentTaskExecutor, ConcurrentTaskScheduler, GlassFishWorkManagerTaskExecutor, JBossWorkManagerTaskExecutor, SimpleAsyncTaskExecutor, SimpleThreadPoolTaskExecutor, TaskExecutorAdapter, ThreadPoolTaskExecutor, ThreadPoolTaskExecutor, ThreadPoolTaskScheduler, TimerTaskExecutor, WorkManagerTaskExecutor, WorkManagerTaskExecutor

    public interface AsyncTaskExecutor

extends TaskExecutor

Extended interface for asynchronous `TaskExecutor` implementations, offering an overloaded `execute(Runnable, long)` variant with a start timeout parameter as well support for `Callable`.

Note: The `Executors` class includes a set of methods that can convert some other common closure-like objects, for example, `PrivilegedAction` to `Callable` before executing them.

Implementing this interface also indicates that the `TaskExecutor.execute(Runnable)` method will not execute its Runnable in the caller's thread but rather asynchronously in some other thread.

Since:
  2.0.3
Author:
  Juergen Hoeller
See Also:
  `SimpleAsyncTaskExecutor`, `SchedulingTaskExecutor`, `Callable`, `Executors`

Field Summary
`static long` `TIMEOUT_IMMEDIATE` Constant that indicates immediate execution
`static long` `TIMEOUT_INDEFINITE` Constant that indicates no time limit

Method Summary
`void` `execute(Runnable task, long startTimeout)` Execute the given `task`.

`

`<T> Future<T>`

`

`submit(Callable<T> task)`
Submit a Callable task for execution, receiving a Future representing that task.

`Future<?>` `submit(Runnable task)` Submit a Runnable task for execution, receiving a Future representing that task.

Methods inherited from interface org.springframework.core.task.TaskExecutor
`execute`

Field Detail

### TIMEOUT_IMMEDIATE

    static final long TIMEOUT_IMMEDIATE

  Constant that indicates immediate execution

  See Also:
    Constant Field Values

### TIMEOUT_INDEFINITE

    static final long TIMEOUT_INDEFINITE

  Constant that indicates no time limit

  See Also:
    Constant Field Values

Method Detail

### execute

    void execute(Runnable task,
                 long startTimeout)

  Execute the given `task`.

  Parameters:
    `task` - the `Runnable` to execute (never `null`)
    `startTimeout` - the time duration (milliseconds) within which the task is supposed to start. This is intended as a hint to the executor, allowing for preferred handling of immediate tasks. Typical values are `TIMEOUT_IMMEDIATE` or `TIMEOUT_INDEFINITE` (the default as used by `TaskExecutor.execute(Runnable)`).
  Throws:
    `TaskTimeoutException` - in case of the task being rejected because of the timeout (i.e. it cannot be started in time)
    `TaskRejectedException` - if the given task was not accepted

### submit

    Future<?> submit(Runnable task)

  Submit a Runnable task for execution, receiving a Future representing that task. The Future will return a `null` result upon completion.

  Parameters:
    `task` - the `Runnable` to execute (never `null`)
  Returns:
    a Future representing pending completion of the task
  Throws:
    `TaskRejectedException` - if the given task was not accepted

### submit

    <T> Future<T> submit(Callable<T> task)

  Submit a Callable task for execution, receiving a Future representing that task. The Future will return the Callable's result upon completion.

  Parameters:
    `task` - the `Callable` to execute (never `null`)
  Returns:
    a Future representing pending completion of the task
  Throws:
    `TaskRejectedException` - if the given task was not accepted