public class

ConcurrentTaskExecutor

extends Object
implements SchedulingTaskExecutor
java.lang.Object
   ↳ org.springframework.scheduling.backportconcurrent.ConcurrentTaskExecutor

Class Overview

Adapter that takes a JSR-166 backport edu.emory.mathcs.backport.java.util.concurrent.Executor and exposes a Spring TaskExecutor for it.

NOTE: This class implements Spring's TaskExecutor interface (and hence implicitly the standard Java 5 Executor interface) as well as the JSR-166 edu.emory.mathcs.backport.java.util.concurrent.Executor interface, with the former being the primary interface, the other just serving as secondary convenience. For this reason, the exception handling follows the TaskExecutor contract rather than the backport Executor contract, in particular regarding the TaskRejectedException.

Note that there is a pre-built ThreadPoolTaskExecutor that allows for defining a JSR-166 backport edu.emory.mathcs.backport.java.util.concurrent.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.

See Also
  • edu.emory.mathcs.backport.java.util.concurrent.Executor
  • edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor
  • edu.emory.mathcs.backport.java.util.concurrent.Executors
  • ThreadPoolTaskExecutor

Summary

[Expand]
Inherited Constants
From interface org.springframework.core.task.AsyncTaskExecutor
Public Constructors
ConcurrentTaskExecutor()
Create a new ConcurrentTaskExecutor, using a single thread executor as default.
ConcurrentTaskExecutor(Executor concurrentExecutor)
Create a new ConcurrentTaskExecutor, using the given JSR-166 backport concurrent executor.
Public Methods
void execute(Runnable task, long startTimeout)
Execute the given task.
void execute(Runnable task)
Delegates to the specified JSR-166 backport concurrent executor.
final Executor getConcurrentExecutor()
Return the JSR-166 backport concurrent executor that this adapter delegates to.
boolean prefersShortLivedTasks()
This task executor prefers short-lived work units.
final void setConcurrentExecutor(Executor concurrentExecutor)
Specify the JSR-166 backport concurrent executor to delegate to.
<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.
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.util.concurrent.Executor
From interface org.springframework.core.task.AsyncTaskExecutor
From interface org.springframework.core.task.TaskExecutor
From interface org.springframework.scheduling.SchedulingTaskExecutor

Public Constructors

public ConcurrentTaskExecutor ()

Create a new ConcurrentTaskExecutor, using a single thread executor as default.

See Also
  • edu.emory.mathcs.backport.java.util.concurrent.Executors#newSingleThreadExecutor()

public ConcurrentTaskExecutor (Executor concurrentExecutor)

Create a new ConcurrentTaskExecutor, using the given JSR-166 backport concurrent executor.

Parameters
concurrentExecutor the JSR-166 backport concurrent executor to delegate to

Public Methods

public void execute (Runnable task, long startTimeout)

Execute the given task.

Parameters
task 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 TIMEOUT_IMMEDIATE or TIMEOUT_INDEFINITE (the default as used by execute(Runnable)).

public void execute (Runnable task)

Delegates to the specified JSR-166 backport concurrent executor.

Parameters
task the Runnable to execute (never null)
See Also
  • edu.emory.mathcs.backport.java.util.concurrent.Executor#execute(Runnable)

public final Executor getConcurrentExecutor ()

Return the JSR-166 backport concurrent executor that this adapter delegates to.

public boolean prefersShortLivedTasks ()

This task executor prefers short-lived work units.

Returns
  • true if this TaskExecutor prefers short-lived tasks

public final void setConcurrentExecutor (Executor concurrentExecutor)

Specify the JSR-166 backport concurrent executor to delegate to.

public Future<T> submit (Callable<T> task)

Submit a Callable task for execution, receiving a Future representing that task. The Future will return the Callable's result upon completion.

Parameters
task the Callable to execute (never null)
Returns
  • a Future representing pending completion of the task

public Future<?> submit (Runnable task)

Submit a Runnable task for execution, receiving a Future representing that task. The Future will return a null result upon completion.

Parameters
task the Runnable to execute (never null)
Returns
  • a Future representing pending completion of the task