Class NonStickyEventExecutorGroup

java.lang.Object
io.netty.util.concurrent.NonStickyEventExecutorGroup
All Implemented Interfaces:
EventExecutorGroup, java.lang.Iterable<EventExecutor>, java.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent.ScheduledExecutorService

@UnstableApi public final class NonStickyEventExecutorGroup extends java.lang.Object implements EventExecutorGroup
EventExecutorGroup which will preserve Runnable execution order but makes no guarantees about what EventExecutor (and therefore Thread) will be used to execute the Runnables.

The EventExecutorGroup.next() for the wrapped EventExecutorGroup must NOT return executors of type OrderedEventExecutor.

  • Field Details

    • group

      private final EventExecutorGroup group
    • maxTaskExecutePerRun

      private final int maxTaskExecutePerRun
  • Constructor Details

  • Method Details

    • verify

      private static EventExecutorGroup verify(EventExecutorGroup group)
    • newExecutor

    • isShuttingDown

      public boolean isShuttingDown()
      Description copied from interface: EventExecutorGroup
      Returns true if and only if all EventExecutors managed by this EventExecutorGroup are being shut down gracefully or was shut down.
      Specified by:
      isShuttingDown in interface EventExecutorGroup
    • shutdownGracefully

      public Future<?> shutdownGracefully()
      Description copied from interface: EventExecutorGroup
      Shortcut method for EventExecutorGroup.shutdownGracefully(long, long, TimeUnit) with sensible default values.
      Specified by:
      shutdownGracefully in interface EventExecutorGroup
      Returns:
      the EventExecutorGroup.terminationFuture()
    • shutdownGracefully

      public Future<?> shutdownGracefully(long quietPeriod, long timeout, java.util.concurrent.TimeUnit unit)
      Description copied from interface: EventExecutorGroup
      Signals this executor that the caller wants the executor to be shut down. Once this method is called, EventExecutorGroup.isShuttingDown() starts to return true, and the executor prepares to shut itself down. Unlike EventExecutorGroup.shutdown(), graceful shutdown ensures that no tasks are submitted for 'the quiet period' (usually a couple seconds) before it shuts itself down. If a task is submitted during the quiet period, it is guaranteed to be accepted and the quiet period will start over.
      Specified by:
      shutdownGracefully in interface EventExecutorGroup
      Parameters:
      quietPeriod - the quiet period as described in the documentation
      timeout - the maximum amount of time to wait until the executor is EventExecutorGroup.shutdown() regardless if a task was submitted during the quiet period
      unit - the unit of quietPeriod and timeout
      Returns:
      the EventExecutorGroup.terminationFuture()
    • terminationFuture

      public Future<?> terminationFuture()
      Description copied from interface: EventExecutorGroup
      Returns the Future which is notified when all EventExecutors managed by this EventExecutorGroup have been terminated.
      Specified by:
      terminationFuture in interface EventExecutorGroup
    • shutdown

      public void shutdown()
      Specified by:
      shutdown in interface EventExecutorGroup
      Specified by:
      shutdown in interface java.util.concurrent.ExecutorService
    • shutdownNow

      public java.util.List<java.lang.Runnable> shutdownNow()
      Specified by:
      shutdownNow in interface EventExecutorGroup
      Specified by:
      shutdownNow in interface java.util.concurrent.ExecutorService
    • next

      public EventExecutor next()
      Description copied from interface: EventExecutorGroup
      Returns one of the EventExecutors managed by this EventExecutorGroup.
      Specified by:
      next in interface EventExecutorGroup
    • iterator

      public java.util.Iterator<EventExecutor> iterator()
      Specified by:
      iterator in interface EventExecutorGroup
      Specified by:
      iterator in interface java.lang.Iterable<EventExecutor>
    • submit

      public Future<?> submit(java.lang.Runnable task)
      Specified by:
      submit in interface EventExecutorGroup
      Specified by:
      submit in interface java.util.concurrent.ExecutorService
    • submit

      public <T> Future<T> submit(java.lang.Runnable task, T result)
      Specified by:
      submit in interface EventExecutorGroup
      Specified by:
      submit in interface java.util.concurrent.ExecutorService
    • submit

      public <T> Future<T> submit(java.util.concurrent.Callable<T> task)
      Specified by:
      submit in interface EventExecutorGroup
      Specified by:
      submit in interface java.util.concurrent.ExecutorService
    • schedule

      public ScheduledFuture<?> schedule(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)
      Specified by:
      schedule in interface EventExecutorGroup
      Specified by:
      schedule in interface java.util.concurrent.ScheduledExecutorService
    • schedule

      public <V> ScheduledFuture<V> schedule(java.util.concurrent.Callable<V> callable, long delay, java.util.concurrent.TimeUnit unit)
      Specified by:
      schedule in interface EventExecutorGroup
      Specified by:
      schedule in interface java.util.concurrent.ScheduledExecutorService
    • scheduleAtFixedRate

      public ScheduledFuture<?> scheduleAtFixedRate(java.lang.Runnable command, long initialDelay, long period, java.util.concurrent.TimeUnit unit)
      Specified by:
      scheduleAtFixedRate in interface EventExecutorGroup
      Specified by:
      scheduleAtFixedRate in interface java.util.concurrent.ScheduledExecutorService
    • scheduleWithFixedDelay

      public ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)
      Specified by:
      scheduleWithFixedDelay in interface EventExecutorGroup
      Specified by:
      scheduleWithFixedDelay in interface java.util.concurrent.ScheduledExecutorService
    • isShutdown

      public boolean isShutdown()
      Specified by:
      isShutdown in interface java.util.concurrent.ExecutorService
    • isTerminated

      public boolean isTerminated()
      Specified by:
      isTerminated in interface java.util.concurrent.ExecutorService
    • awaitTermination

      public boolean awaitTermination(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
      Specified by:
      awaitTermination in interface java.util.concurrent.ExecutorService
      Throws:
      java.lang.InterruptedException
    • invokeAll

      public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) throws java.lang.InterruptedException
      Specified by:
      invokeAll in interface java.util.concurrent.ExecutorService
      Throws:
      java.lang.InterruptedException
    • invokeAll

      public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
      Specified by:
      invokeAll in interface java.util.concurrent.ExecutorService
      Throws:
      java.lang.InterruptedException
    • invokeAny

      public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
      Specified by:
      invokeAny in interface java.util.concurrent.ExecutorService
      Throws:
      java.lang.InterruptedException
      java.util.concurrent.ExecutionException
    • invokeAny

      public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
      Specified by:
      invokeAny in interface java.util.concurrent.ExecutorService
      Throws:
      java.lang.InterruptedException
      java.util.concurrent.ExecutionException
      java.util.concurrent.TimeoutException
    • execute

      public void execute(java.lang.Runnable command)
      Specified by:
      execute in interface java.util.concurrent.Executor