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