public class ConcurrentTaskExecutor extends java.lang.Object implements SchedulingTaskExecutor
java.util.concurrent.Executor
and
exposes a Spring TaskExecutor
for it.
Also detects an extended java.util.concurrent.ExecutorService
, adapting
the AsyncTaskExecutor
interface accordingly.
Note that there is a pre-built ThreadPoolTaskExecutor
that allows for
defining a JDK 1.5 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.
Executor
,
ExecutorService
,
ThreadPoolExecutor
,
Executors
,
ThreadPoolTaskExecutor
Constructor and Description |
---|
ConcurrentTaskExecutor()
Create a new ConcurrentTaskExecutor,
using a single thread executor as default.
|
ConcurrentTaskExecutor(java.util.concurrent.Executor concurrentExecutor)
Create a new ConcurrentTaskExecutor,
using the given JDK 1.5 concurrent executor.
|
Modifier and Type | Method and Description |
---|---|
void |
execute(java.lang.Runnable task) |
void |
execute(java.lang.Runnable task,
long startTimeout) |
java.util.concurrent.Executor |
getConcurrentExecutor()
Return the JDK 1.5 concurrent executor that this adapter delegates to.
|
boolean |
prefersShortLivedTasks()
This task executor prefers short-lived work units.
|
void |
setConcurrentExecutor(java.util.concurrent.Executor concurrentExecutor)
Specify the JDK 1.5 concurrent executor to delegate to.
|
<T> java.util.concurrent.Future<T> |
submit(java.util.concurrent.Callable<T> task) |
java.util.concurrent.Future<?> |
submit(java.lang.Runnable task) |
public ConcurrentTaskExecutor()
Executors.newSingleThreadExecutor()
public ConcurrentTaskExecutor(java.util.concurrent.Executor concurrentExecutor)
concurrentExecutor
- the JDK 1.5 concurrent executor to delegate topublic final void setConcurrentExecutor(java.util.concurrent.Executor concurrentExecutor)
public final java.util.concurrent.Executor getConcurrentExecutor()
public void execute(java.lang.Runnable task)
execute
in interface java.util.concurrent.Executor
execute
in interface org.springframework.core.task.TaskExecutor
public void execute(java.lang.Runnable task, long startTimeout)
execute
in interface org.springframework.core.task.AsyncTaskExecutor
public java.util.concurrent.Future<?> submit(java.lang.Runnable task)
submit
in interface org.springframework.core.task.AsyncTaskExecutor
public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
submit
in interface org.springframework.core.task.AsyncTaskExecutor
public boolean prefersShortLivedTasks()
prefersShortLivedTasks
in interface SchedulingTaskExecutor
true
if this TaskExecutor
prefers
short-lived tasks