Class ConcurrentTaskExecutor
- All Implemented Interfaces:
Executor
,org.springframework.core.task.AsyncListenableTaskExecutor
,org.springframework.core.task.AsyncTaskExecutor
,org.springframework.core.task.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 class
Delegate that wraps a given Runnable/Callable with a JSR-236 ManagedTask, exposing a long-running hint based onSchedulingAwareRunnable
and a given identity name. -
Field Summary
Fields inherited from interface org.springframework.core.task.AsyncTaskExecutor
TIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE
-
Constructor Summary
ConstructorsConstructorDescriptionCreate a new ConcurrentTaskExecutor, using a single thread executor as default.ConcurrentTaskExecutor
(Executor executor) Create a new ConcurrentTaskExecutor, using the givenExecutor
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
Deprecated.final Executor
Return theExecutor
that this adapter delegates to.final void
setConcurrentExecutor
(Executor executor) Specify theExecutor
to delegate to.final void
setTaskDecorator
(org.springframework.core.task.TaskDecorator taskDecorator) Specify a customTaskDecorator
to be applied to anyRunnable
about to be executed.Future<?>
<T> Future<T>
org.springframework.util.concurrent.ListenableFuture<?>
submitListenable
(Runnable task) <T> org.springframework.util.concurrent.ListenableFuture<T>
submitListenable
(Callable<T> task) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.core.task.AsyncTaskExecutor
submitCompletable, submitCompletable
Methods inherited from interface org.springframework.scheduling.SchedulingTaskExecutor
prefersShortLivedTasks
-
Constructor Details
-
ConcurrentTaskExecutor
public ConcurrentTaskExecutor()Create a new ConcurrentTaskExecutor, using a single thread executor as default.- See Also:
-
ConcurrentTaskExecutor
Create a new ConcurrentTaskExecutor, using the givenExecutor
.Autodetects a JSR-236
ManagedExecutorService
in order to exposeManagedTask
adapters for it.- Parameters:
executor
- theExecutor
to delegate to
-
-
Method Details
-
setConcurrentExecutor
Specify theExecutor
to delegate to.Autodetects a JSR-236
ManagedExecutorService
in order to exposeManagedTask
adapters for it. -
getConcurrentExecutor
Return theExecutor
that this adapter delegates to. -
setTaskDecorator
public final void setTaskDecorator(org.springframework.core.task.TaskDecorator taskDecorator) Specify a customTaskDecorator
to be applied to anyRunnable
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 plainRunnable
execution viaexecute
calls. In case of#submit
calls, the exposedRunnable
will be aFutureTask
which does not propagate any exceptions; you might have to cast it and callFuture#get
to evaluate exceptions.- Since:
- 4.3
-
execute
-
execute
Deprecated.- Specified by:
execute
in interfaceorg.springframework.core.task.AsyncTaskExecutor
-
submit
- Specified by:
submit
in interfaceorg.springframework.core.task.AsyncTaskExecutor
-
submit
- Specified by:
submit
in interfaceorg.springframework.core.task.AsyncTaskExecutor
-
submitListenable
- Specified by:
submitListenable
in interfaceorg.springframework.core.task.AsyncListenableTaskExecutor
-
submitListenable
public <T> org.springframework.util.concurrent.ListenableFuture<T> submitListenable(Callable<T> task) - Specified by:
submitListenable
in interfaceorg.springframework.core.task.AsyncListenableTaskExecutor
-