Interface AsyncTaskExecutor

All Superinterfaces:
Executor, TaskExecutor
All Known Subinterfaces:
AsyncListenableTaskExecutor, SchedulingTaskExecutor
All Known Implementing Classes:
ConcurrentTaskExecutor, ConcurrentTaskScheduler, DefaultManagedTaskExecutor, DefaultManagedTaskScheduler, SimpleAsyncTaskExecutor, SimpleAsyncTaskScheduler, SimpleThreadPoolTaskExecutor, TaskExecutorAdapter, ThreadPoolTaskExecutor, ThreadPoolTaskScheduler, VirtualThreadTaskExecutor

public interface AsyncTaskExecutor extends TaskExecutor
Extended interface for asynchronous TaskExecutor implementations, offering support for Callable.

Note: The Executors class includes a set of methods that can convert some other common closure-like objects, for example, PrivilegedAction to Callable before executing them.

Implementing this interface also indicates that the TaskExecutor.execute(Runnable) method will not execute its Runnable in the caller's thread but rather asynchronously in some other thread.

Since:
2.0.3
Author:
Juergen Hoeller
See Also:
  • Field Details

  • Method Details

    • execute

      @Deprecated default void execute(Runnable task, long startTimeout)
      Deprecated.
      as of 5.3.16 since the common executors do not support start timeouts
      Execute the given task.

      As of 6.1, this method comes with a default implementation that simply delegates to TaskExecutor.execute(Runnable), ignoring the timeout completely.

      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 TaskExecutor.execute(Runnable)).
      Throws:
      TaskTimeoutException - in case of the task being rejected because of the timeout (i.e. it cannot be started in time)
      TaskRejectedException - if the given task was not accepted
      See Also:
    • submit

      default 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.

      As of 6.1, this method comes with a default implementation that delegates to TaskExecutor.execute(Runnable).

      Parameters:
      task - the Runnable to execute (never null)
      Returns:
      a Future representing pending completion of the task
      Throws:
      TaskRejectedException - if the given task was not accepted
      Since:
      3.0
    • submit

      default <T> 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.

      As of 6.1, this method comes with a default implementation that delegates to TaskExecutor.execute(Runnable).

      Parameters:
      task - the Callable to execute (never null)
      Returns:
      a Future representing pending completion of the task
      Throws:
      TaskRejectedException - if the given task was not accepted
      Since:
      3.0
    • submitCompletable

      default CompletableFuture<Void> submitCompletable(Runnable task)
      Submit a Runnable task for execution, receiving a CompletableFuture representing that task. The Future will return a null result upon completion.
      Parameters:
      task - the Runnable to execute (never null)
      Returns:
      a CompletableFuture representing pending completion of the task
      Throws:
      TaskRejectedException - if the given task was not accepted
      Since:
      6.0
    • submitCompletable

      default <T> CompletableFuture<T> submitCompletable(Callable<T> task)
      Submit a Callable task for execution, receiving a CompletableFuture representing that task. The Future will return the Callable's result upon completion.
      Parameters:
      task - the Callable to execute (never null)
      Returns:
      a CompletableFuture representing pending completion of the task
      Throws:
      TaskRejectedException - if the given task was not accepted
      Since:
      6.0