Class SyncTaskExecutor

java.lang.Object
org.springframework.util.ConcurrencyThrottleSupport
org.springframework.core.task.SyncTaskExecutor
All Implemented Interfaces:
Serializable, Executor, TaskExecutor

public class SyncTaskExecutor extends ConcurrencyThrottleSupport implements TaskExecutor, Serializable
TaskExecutor implementation that executes each task synchronously in the calling thread. This can be used for testing purposes but also for bounded execution in a Virtual Threads setup, relying on concurrency throttling as inherited from the base class: see ConcurrencyThrottleSupport.setConcurrencyLimit(int) (as of 7.0).

Execution in the calling thread does have the advantage of participating in its thread context, for example the thread context class loader or the thread's current transaction association. That said, in many cases, asynchronous execution will be preferable: choose an asynchronous TaskExecutor instead for such scenarios.

Since:
2.0
Author:
Juergen Hoeller
See Also:
  • Constructor Details

    • SyncTaskExecutor

      public SyncTaskExecutor()
  • Method Details

    • execute

      public void execute(Runnable task)
      Execute the given task synchronously, through direct invocation of its run() method.
      Specified by:
      execute in interface Executor
      Specified by:
      execute in interface TaskExecutor
      Parameters:
      task - the Runnable to execute (never null)
      Throws:
      RuntimeException - if propagated from the given Runnable
    • execute

      public <V, E extends Exception> V execute(TaskCallback<V,E> task) throws E
      Execute the given task synchronously, through direct invocation of its call() method.
      Type Parameters:
      V - the returned value type, if any
      E - the exception propagated, if any
      Throws:
      E - if propagated from the given TaskCallback
      Since:
      7.0