Interface Executor

All Superinterfaces:
TimeSource
All Known Subinterfaces:
EventLoopAwareNettyIoExecutor, Executor, IoExecutor, NettyIoExecutor
All Known Implementing Classes:
DelegatingExecutor

public interface Executor extends TimeSource
A general abstraction to execute immediate and delayed tasks.

Long running tasks

Executor implementations are expected to run long running (blocking) tasks which may depend on other tasks submitted to the same Executor instance. In order to avoid deadlocks, it is generally a good idea to not allow task queuing in the Executor.
  • Method Details

    • currentTime

      default long currentTime(TimeUnit unit)
      Description copied from interface: TimeSource
      Returns the internal clock time in the specified unit.
      Specified by:
      currentTime in interface TimeSource
      Parameters:
      unit - the time unit to calculate
      Returns:
      the internal clock time in the specified unit.
    • execute

      Executes the passed task as soon as possible.
      Parameters:
      task - to execute.
      Returns:
      Cancellable to cancel the task if not yet executed.
      Throws:
      RejectedExecutionException - If the task is rejected.
    • schedule

      Cancellable schedule(Runnable task, long delay, TimeUnit unit) throws RejectedExecutionException
      Executes the passed task after delay amount of units time has passed.

      Note this method is not guaranteed to provide real time execution. For example implementations are free to consolidate tasks into time buckets to reduce the overhead of timer management at the cost of reduced timer fidelity.

      Parameters:
      task - to execute.
      delay - The time duration that is allowed to elapse before task is executed.
      unit - The units for delay.
      Returns:
      Cancellable to cancel the task if not yet executed.
      Throws:
      RejectedExecutionException - If the task is rejected.
    • schedule

      default Cancellable schedule(Runnable task, Duration delay) throws RejectedExecutionException
      Executes the passed task after delay amount time has passed.

      Note this method is not guaranteed to provide real time execution. For example implementations are free to consolidate tasks into time buckets to reduce the overhead of timer management at the cost of reduced timer fidelity.

      Parameters:
      task - to execute.
      delay - The time duration that is allowed to elapse before task is executed.
      Returns:
      Cancellable to cancel the task if not yet executed.
      Throws:
      RejectedExecutionException - If the task is rejected.