## org.springframework.scheduling.backportconcurrent
Class ConcurrentTaskExecutor

    java.lang.Object
      org.springframework.scheduling.backportconcurrent.ConcurrentTaskExecutor

All Implemented Interfaces:
  edu.emory.mathcs.backport.java.util.concurrent.Executor, AsyncTaskExecutor, TaskExecutor, SchedulingTaskExecutor

    public class ConcurrentTaskExecutor

extends Object
implements SchedulingTaskExecutor, edu.emory.mathcs.backport.java.util.concurrent.Executor

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 `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 `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.3
Author:
  Juergen Hoeller
See Also:
  `Executor`, `ThreadPoolExecutor`, `Executors`, `ThreadPoolTaskExecutor`

Field Summary

Fields inherited from interface org.springframework.core.task.AsyncTaskExecutor
`TIMEOUT_IMMEDIATE, TIMEOUT_INDEFINITE`

Constructor Summary
`ConcurrentTaskExecutor()` Create a new ConcurrentTaskExecutor, using a single thread executor as default.
`ConcurrentTaskExecutor(edu.emory.mathcs.backport.java.util.concurrent.Executor concurrentExecutor)` Create a new ConcurrentTaskExecutor, using the given JSR-166 backport concurrent executor.

Method Summary
`void` `execute(Runnable task)` Delegates to the specified JSR-166 backport concurrent executor.
`void` `execute(Runnable task, long startTimeout)` Execute the given `task`.
`edu.emory.mathcs.backport.java.util.concurrent.Executor` `getConcurrentExecutor()` Return the JSR-166 backport concurrent executor that this adapter delegates to.
`boolean` `prefersShortLivedTasks()` This task executor prefers short-lived work units.
`void` `setConcurrentExecutor(edu.emory.mathcs.backport.java.util.concurrent.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.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ConcurrentTaskExecutor

    public ConcurrentTaskExecutor()

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

  See Also:
    `Executors.newSingleThreadExecutor()`

### ConcurrentTaskExecutor

    public ConcurrentTaskExecutor(edu.emory.mathcs.backport.java.util.concurrent.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

Method Detail

### setConcurrentExecutor

    public final void setConcurrentExecutor(edu.emory.mathcs.backport.java.util.concurrent.Executor concurrentExecutor)

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

### getConcurrentExecutor

    public final edu.emory.mathcs.backport.java.util.concurrent.Executor getConcurrentExecutor()

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

### execute

    public void execute(Runnable task)

  Delegates to the specified JSR-166 backport concurrent executor.

  Specified by:
    `execute` in interface `edu.emory.mathcs.backport.java.util.concurrent.Executor`
  Specified by:
    `execute` in interface `TaskExecutor`
  Parameters:
    `task` - the `Runnable` to execute (never `null`)
  See Also:
    `Executor.execute(Runnable)`

### execute

    public void execute(Runnable task,
                        long startTimeout)

  Description copied from interface: `AsyncTaskExecutor`
  Execute the given `task`.

  Specified by:
    `execute` in interface `AsyncTaskExecutor`
  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 `AsyncTaskExecutor.TIMEOUT_IMMEDIATE` or `AsyncTaskExecutor.TIMEOUT_INDEFINITE` (the default as used by `TaskExecutor.execute(Runnable)`).

### submit

    public Future<?> submit(Runnable task)

  Description copied from interface: `AsyncTaskExecutor`
  Submit a Runnable task for execution, receiving a Future representing that task. The Future will return a `null` result upon completion.

  Specified by:
    `submit` in interface `AsyncTaskExecutor`
  Parameters:
    `task` - the `Runnable` to execute (never `null`)
  Returns:
    a Future representing pending completion of the task

### submit

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

  Description copied from interface: `AsyncTaskExecutor`
  Submit a Callable task for execution, receiving a Future representing that task. The Future will return the Callable's result upon completion.

  Specified by:
    `submit` in interface `AsyncTaskExecutor`
  Parameters:
    `task` - the `Callable` to execute (never `null`)
  Returns:
    a Future representing pending completion of the task

### prefersShortLivedTasks

    public boolean prefersShortLivedTasks()

  This task executor prefers short-lived work units.

  Specified by:
    `prefersShortLivedTasks` in interface `SchedulingTaskExecutor`
  Returns:
    `true` if this `TaskExecutor` prefers short-lived tasks