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
Return theExecutorthat this adapter delegates to. -
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