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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static long` | `TIMEOUT_IMMEDIATE` Constant that indicates immediate execution
    `static long` | `TIMEOUT_INDEFINITE` Constant that indicates no time limit

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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