Class ConcurrentTaskExecutor
- All Implemented Interfaces:
 Executor,AsyncTaskExecutor,TaskExecutor,SchedulingTaskExecutor
- Direct Known Subclasses:
 ConcurrentTaskScheduler,DefaultManagedTaskExecutor
java.util.concurrent.Executor and exposes
 a Spring TaskExecutor for it.
 Also detects an extended java.util.concurrent.ExecutorService, adapting
 the AsyncTaskExecutor interface accordingly.
 Autodetects a JSR-236 ManagedExecutorService
 in order to expose ManagedTask adapters for it,
 exposing a long-running hint based on SchedulingAwareRunnable and an identity
 name based on the given Runnable/Callable's toString(). For JSR-236 style
 lookup in a Jakarta EE environment, consider using DefaultManagedTaskExecutor.
 
Note that there is a pre-built ThreadPoolTaskExecutor that allows
 for defining a ThreadPoolExecutor in bean style,
 exposing it as a Spring TaskExecutor directly.
 This is a convenient alternative to a raw ThreadPoolExecutor definition with
 a separate definition of the present adapter class.
- Since:
 - 2.0
 - Author:
 - Juergen Hoeller
 - See Also:
 
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classDelegate that wraps a given Runnable/Callable with a JSR-236 ManagedTask, exposing a long-running hint based onSchedulingAwareRunnableand a given identity name. - 
Field Summary
Fields inherited from interface org.springframework.core.task.AsyncTaskExecutor
TIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE - 
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.ConcurrentTaskExecutor(@Nullable Executor executor) Create a new ConcurrentTaskExecutor, using the givenExecutor. - 
Method Summary
Modifier and TypeMethodDescriptionvoidExecute the giventask.voidDeprecated.final ExecutorReturn theExecutorthat this adapter delegates to.final voidsetConcurrentExecutor(Executor executor) Specify theExecutorto delegate to.final voidsetTaskDecorator(TaskDecorator taskDecorator) Specify a customTaskDecoratorto be applied to anyRunnableabout to be executed.Future<?> Submit a Runnable task for execution, receiving a Future representing that task.<T> Future<T> Submit a Callable task for execution, receiving a Future representing that task.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.core.task.AsyncTaskExecutor
submitCompletable, submitCompletableMethods inherited from interface org.springframework.scheduling.SchedulingTaskExecutor
prefersShortLivedTasks 
- 
Constructor Details
- 
ConcurrentTaskExecutor
Deprecated.in favor ofConcurrentTaskExecutor(Executor)with an externally provided ExecutorCreate a new ConcurrentTaskExecutor, using a single thread executor as default.- See Also:
 
 - 
ConcurrentTaskExecutor
Create a new ConcurrentTaskExecutor, using the givenExecutor.Autodetects a JSR-236
ManagedExecutorServicein order to exposeManagedTaskadapters for it.- Parameters:
 executor- theExecutorto delegate to
 
 - 
 - 
Method Details
- 
setConcurrentExecutor
Specify theExecutorto delegate to.Autodetects a JSR-236
ManagedExecutorServicein order to exposeManagedTaskadapters for it. - 
getConcurrentExecutor
 - 
setTaskDecorator
Specify a customTaskDecoratorto be applied to anyRunnableabout to be executed.Note that such a decorator is not necessarily being applied to the user-supplied
Runnable/Callablebut 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.
- Since:
 - 4.3
 
 - 
execute
Description copied from interface:TaskExecutorExecute the giventask.The call might return immediately if the implementation uses an asynchronous execution strategy, or might block in the case of synchronous execution.
- Specified by:
 executein interfaceExecutor- Specified by:
 executein interfaceTaskExecutor- Parameters:
 task- theRunnableto execute (nevernull)
 - 
execute
Deprecated.Description copied from interface:AsyncTaskExecutorExecute the giventask.As of 6.1, this method comes with a default implementation that simply delegates to
TaskExecutor.execute(Runnable), ignoring the timeout completely.- Specified by:
 executein interfaceAsyncTaskExecutor- Parameters:
 task- theRunnableto execute (nevernull)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 areAsyncTaskExecutor.TIMEOUT_IMMEDIATEorAsyncTaskExecutor.TIMEOUT_INDEFINITE(the default as used byTaskExecutor.execute(Runnable)).- See Also:
 
 - 
submit
Description copied from interface:AsyncTaskExecutorSubmit a Runnable task for execution, receiving a Future representing that task. The Future will return anullresult upon completion.As of 6.1, this method comes with a default implementation that delegates to
TaskExecutor.execute(Runnable).- Specified by:
 submitin interfaceAsyncTaskExecutor- Parameters:
 task- theRunnableto execute (nevernull)- Returns:
 - a Future representing pending completion of the task
 
 - 
submit
Description copied from interface:AsyncTaskExecutorSubmit a Callable task for execution, receiving a Future representing that task. The Future will return the Callable's result upon completion.As of 6.1, this method comes with a default implementation that delegates to
TaskExecutor.execute(Runnable).- Specified by:
 submitin interfaceAsyncTaskExecutor- Parameters:
 task- theCallableto execute (nevernull)- Returns:
 - a Future representing pending completion of the task
 
 
 - 
 
ConcurrentTaskExecutor(Executor)with an externally provided Executor