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
TaskDecorator to be applied to any Runnable
about 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
Callable task for execution, receiving a ListenableFuture
representing that task. |
ListenableFuture<?> |
submitListenable(Runnable task)
Submit a
Runnable task for execution, receiving a ListenableFuture
representing 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.
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, 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