Class MultithreadEventExecutorGroup

    • Constructor Detail

      • MultithreadEventExecutorGroup

        protected MultithreadEventExecutorGroup​(int nThreads,
                                                java.util.concurrent.ThreadFactory threadFactory,
                                                java.lang.Object... args)
        Create a new instance.
        Parameters:
        nThreads - the number of threads that will be used by this instance.
        threadFactory - the ThreadFactory to use, or null if the default should be used.
        args - arguments which will passed to each newChild(Executor, Object...) call
      • MultithreadEventExecutorGroup

        protected MultithreadEventExecutorGroup​(int nThreads,
                                                java.util.concurrent.Executor executor,
                                                java.lang.Object... args)
        Create a new instance.
        Parameters:
        nThreads - the number of threads that will be used by this instance.
        executor - the Executor to use, or null if the default should be used.
        args - arguments which will passed to each newChild(Executor, Object...) call
      • MultithreadEventExecutorGroup

        protected MultithreadEventExecutorGroup​(int nThreads,
                                                java.util.concurrent.Executor executor,
                                                EventExecutorChooserFactory chooserFactory,
                                                java.lang.Object... args)
        Create a new instance.
        Parameters:
        nThreads - the number of threads that will be used by this instance.
        executor - the Executor to use, or null if the default should be used.
        chooserFactory - the EventExecutorChooserFactory to use.
        args - arguments which will passed to each newChild(Executor, Object...) call
    • Method Detail

      • newDefaultThreadFactory

        protected java.util.concurrent.ThreadFactory newDefaultThreadFactory()
      • executorCount

        public final int executorCount()
        Return the number of EventExecutor this implementation uses. This number is the maps 1:1 to the threads it use.
      • newChild

        protected abstract EventExecutor newChild​(java.util.concurrent.Executor executor,
                                                  java.lang.Object... args)
                                           throws java.lang.Exception
        Create a new EventExecutor which will later then accessible via the next() method. This method will be called for each thread that will serve this MultithreadEventExecutorGroup.
        Throws:
        java.lang.Exception
      • 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.
        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()
      • isShutdown

        public boolean isShutdown()
      • isTerminated

        public boolean isTerminated()
      • awaitTermination

        public boolean awaitTermination​(long timeout,
                                        java.util.concurrent.TimeUnit unit)
                                 throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException