类 ConcurrentTaskExecutor

java.lang.Object
cn.taketoday.scheduling.concurrent.ConcurrentTaskExecutor
所有已实现的接口:
cn.taketoday.core.task.AsyncListenableTaskExecutor, cn.taketoday.core.task.AsyncTaskExecutor, cn.taketoday.core.task.TaskExecutor, SchedulingTaskExecutor, Executor
直接已知子类:
ConcurrentTaskScheduler, DefaultManagedTaskExecutor

public class ConcurrentTaskExecutor extends Object implements cn.taketoday.core.task.AsyncListenableTaskExecutor, SchedulingTaskExecutor
Adapter that takes a java.util.concurrent.Executor and exposes a Framework 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 Framework TaskExecutor directly. This is a convenient alternative to a raw ThreadPoolExecutor definition with a separate definition of the present adapter class.

从以下版本开始:
4.0
作者:
Juergen Hoeller
另请参阅:
  • 构造器详细资料

    • ConcurrentTaskExecutor

      public ConcurrentTaskExecutor()
      Create a new ConcurrentTaskExecutor, using a single thread executor as default.
      另请参阅:
    • ConcurrentTaskExecutor

      public ConcurrentTaskExecutor(@Nullable Executor executor)
      Create a new ConcurrentTaskExecutor, using the given Executor.

      Autodetects a JSR-236 ManagedExecutorService in order to expose ManagedTask adapters for it.

      参数:
      executor - the Executor to delegate to
  • 方法详细资料

    • setConcurrentExecutor

      public final void setConcurrentExecutor(@Nullable Executor executor)
      Specify the Executor to delegate to.

      Autodetects a JSR-236 ManagedExecutorService in order to expose ManagedTask adapters for it.

    • getConcurrentExecutor

      public final Executor getConcurrentExecutor()
      Return the Executor that this adapter delegates to.
    • setTaskDecorator

      public final void setTaskDecorator(cn.taketoday.core.task.TaskDecorator taskDecorator)
      Specify a custom TaskDecorator to be applied to any Runnable 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 plain Runnable execution via execute calls. In case of #submit calls, the exposed Runnable will be a FutureTask which does not propagate any exceptions; you might have to cast it and call Future#get to evaluate exceptions.

    • execute

      public void execute(Runnable task)
      指定者:
      execute 在接口中 Executor
      指定者:
      execute 在接口中 cn.taketoday.core.task.TaskExecutor
    • execute

      public void execute(Runnable task, long startTimeout)
      指定者:
      execute 在接口中 cn.taketoday.core.task.AsyncTaskExecutor
    • submit

      public Future<?> submit(Runnable task)
      指定者:
      submit 在接口中 cn.taketoday.core.task.AsyncTaskExecutor
    • submit

      public <T> Future<T> submit(Callable<T> task)
      指定者:
      submit 在接口中 cn.taketoday.core.task.AsyncTaskExecutor
    • submitListenable

      public cn.taketoday.util.concurrent.ListenableFuture<?> submitListenable(Runnable task)
      指定者:
      submitListenable 在接口中 cn.taketoday.core.task.AsyncListenableTaskExecutor
    • submitListenable

      public <T> cn.taketoday.util.concurrent.ListenableFuture<T> submitListenable(Callable<T> task)
      指定者:
      submitListenable 在接口中 cn.taketoday.core.task.AsyncListenableTaskExecutor