public class TaskExecutorAdapter extends Object implements AsyncListenableTaskExecutor
java.util.concurrent.Executor and
 exposes a Spring TaskExecutor for it.
 Also detects an extended java.util.concurrent.ExecutorService, adapting
 the AsyncTaskExecutor interface accordingly.Executor, 
ExecutorService, 
ExecutorsTIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE| Constructor and Description | 
|---|
| TaskExecutorAdapter(Executor concurrentExecutor)Create a new TaskExecutorAdapter,
 using the given JDK concurrent executor. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected void | doExecute(Executor concurrentExecutor,
         TaskDecorator taskDecorator,
         Runnable runnable)Actually execute the given  Runnable(which may be a user-supplied task
 or a wrapper around a user-supplied task) with the given executor. | 
| void | execute(Runnable task)Delegates to the specified JDK concurrent executor. | 
| void | execute(Runnable task,
       long startTimeout)Execute the given  task. | 
| void | setTaskDecorator(TaskDecorator taskDecorator)Specify a custom  TaskDecoratorto be applied to anyRunnableabout to be executed. | 
| <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. | 
| <T> ListenableFuture<T> | submitListenable(Callable<T> task)Submit a  Callabletask for execution, receiving aListenableFuturerepresenting that task. | 
| ListenableFuture<?> | submitListenable(Runnable task)Submit a  Runnabletask for execution, receiving aListenableFuturerepresenting that task. | 
public TaskExecutorAdapter(Executor concurrentExecutor)
concurrentExecutor - the JDK concurrent executor to delegate topublic final void setTaskDecorator(TaskDecorator taskDecorator)
TaskDecorator to be applied to any Runnable
 about to be executed.
 Note that such a decorator is not necessarily being applied to the
 user-supplied Runnable/Callable but rather to the actual
 execution callback (which may be a wrapper around the user-supplied task).
 
The primary use case is to set some execution context around the task's invocation, or to provide some monitoring/statistics for task execution.
NOTE: Exception handling in TaskDecorator implementations
 is limited to plain Runnable execution via execute calls.
 In case of #submit calls, the exposed Runnable will be a
 FutureTask which does not propagate any exceptions; you might
 have to cast it and call Future#get to evaluate exceptions.
public void execute(Runnable task)
execute in interface Executorexecute in interface TaskExecutortask - the Runnable to execute (never null)Executor.execute(Runnable)public void execute(Runnable task, long startTimeout)
AsyncTaskExecutortask.execute in interface AsyncTaskExecutortask - 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 AsyncTaskExecutor.TIMEOUT_IMMEDIATE
 or AsyncTaskExecutor.TIMEOUT_INDEFINITE (the default as used by TaskExecutor.execute(Runnable)).public Future<?> submit(Runnable task)
AsyncTaskExecutornull result upon completion.submit in interface AsyncTaskExecutortask - the Runnable to execute (never null)public <T> Future<T> submit(Callable<T> task)
AsyncTaskExecutorsubmit in interface AsyncTaskExecutortask - the Callable to execute (never null)public ListenableFuture<?> submitListenable(Runnable task)
AsyncListenableTaskExecutorRunnable task for execution, receiving a ListenableFuture
 representing that task. The Future will return a null result upon completion.submitListenable in interface AsyncListenableTaskExecutortask - the Runnable to execute (never null)ListenableFuture representing pending completion of the taskpublic <T> ListenableFuture<T> submitListenable(Callable<T> task)
AsyncListenableTaskExecutorCallable task for execution, receiving a ListenableFuture
 representing that task. The Future will return the Callable's result upon
 completion.submitListenable in interface AsyncListenableTaskExecutortask - the Callable to execute (never null)ListenableFuture representing pending completion of the taskprotected void doExecute(Executor concurrentExecutor, @Nullable TaskDecorator taskDecorator, Runnable runnable) throws RejectedExecutionException
Runnable (which may be a user-supplied task
 or a wrapper around a user-supplied task) with the given executor.concurrentExecutor - the underlying JDK concurrent executor to delegate totaskDecorator - the specified decorator to be applied, if anyrunnable - the runnable to executeRejectedExecutionException - if the given runnable cannot be accepted