Class CompositeExecutor

java.lang.Object
org.springframework.integration.util.CompositeExecutor
All Implemented Interfaces:
Executor

public class CompositeExecutor extends Object implements Executor
An Executor that encapsulates two underlying executors. Used in cases where two distinct operation types are being used where sharing threads could adversely affect the operation of the system. For example, NIO event processing threads being used for other blocking operations (such as assembling messages). If a CallerRunsPolicy rejected execution policy is used, the NIO event thread might deadlock, and stop processing events.

In order to work in such an environment, the secondary executor must not have a CallerRunsPolicy rejected execution policy.

It is generally recommended to use a CallerBlocksPolicy on both executors.

Since:
3.0.3
Author:
Gary Russell
  • Constructor Details

    • CompositeExecutor

      public CompositeExecutor(Executor primaryTaskExecutor, Executor secondaryTaskExecutor)
  • Method Details

    • execute

      public void execute(Runnable task)
      Execute using the primary executor.
      Specified by:
      execute in interface Executor
      Parameters:
      task - the task to run.
    • execute2

      public void execute2(Runnable task)
      Execute using the secondary executor.
      Parameters:
      task - the task to run.