public class ThreadPerChannelEventLoopGroup extends AbstractEventExecutorGroup implements EventLoopGroup
| Modifier and Type | Field and Description |
|---|---|
(package private) java.util.Set<EventLoop> |
activeChildren |
private java.lang.Object[] |
childArgs |
private FutureListener<java.lang.Object> |
childTerminationListener |
(package private) java.util.concurrent.Executor |
executor |
(package private) java.util.Queue<EventLoop> |
idleChildren |
private int |
maxChannels |
private boolean |
shuttingDown |
private Promise<?> |
terminationFuture |
private ChannelException |
tooManyChannels |
| Modifier | Constructor and Description |
|---|---|
protected |
ThreadPerChannelEventLoopGroup()
Create a new
ThreadPerChannelEventLoopGroup with no limit in place. |
protected |
ThreadPerChannelEventLoopGroup(int maxChannels)
Create a new
ThreadPerChannelEventLoopGroup. |
protected |
ThreadPerChannelEventLoopGroup(int maxChannels,
java.util.concurrent.Executor executor,
java.lang.Object... args)
Create a new
ThreadPerChannelEventLoopGroup. |
protected |
ThreadPerChannelEventLoopGroup(int maxChannels,
java.util.concurrent.ThreadFactory threadFactory,
java.lang.Object... args)
Create a new
ThreadPerChannelEventLoopGroup. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
awaitTermination(long timeout,
java.util.concurrent.TimeUnit unit) |
boolean |
isShutdown() |
boolean |
isShuttingDown()
Returns
true if and only if all EventExecutors managed by this EventExecutorGroup
are being shut down gracefully or was shut down. |
boolean |
isTerminated() |
java.util.Iterator<EventExecutor> |
iterator() |
protected EventLoop |
newChild(java.lang.Object... args)
Creates a new
EventLoop. |
EventLoop |
next()
Return the next
EventLoop to use |
private EventLoop |
nextChild() |
ChannelFuture |
register(Channel channel)
|
ChannelFuture |
register(Channel channel,
ChannelPromise promise)
Deprecated.
|
ChannelFuture |
register(ChannelPromise promise)
|
void |
shutdown()
Deprecated.
|
Future<?> |
shutdownGracefully(long quietPeriod,
long timeout,
java.util.concurrent.TimeUnit unit)
Signals this executor that the caller wants the executor to be shut down.
|
Future<?> |
terminationFuture()
Returns the
Future which is notified when all EventExecutors managed by this
EventExecutorGroup have been terminated. |
execute, invokeAll, invokeAll, invokeAny, invokeAny, schedule, schedule, scheduleAtFixedRate, scheduleWithFixedDelay, shutdownGracefully, shutdownNow, submit, submit, submitclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitschedule, schedule, scheduleAtFixedRate, scheduleWithFixedDelay, shutdownGracefully, shutdownNow, submit, submit, submitprivate final java.lang.Object[] childArgs
private final int maxChannels
final java.util.concurrent.Executor executor
final java.util.Set<EventLoop> activeChildren
final java.util.Queue<EventLoop> idleChildren
private final ChannelException tooManyChannels
private volatile boolean shuttingDown
private final Promise<?> terminationFuture
private final FutureListener<java.lang.Object> childTerminationListener
protected ThreadPerChannelEventLoopGroup()
ThreadPerChannelEventLoopGroup with no limit in place.protected ThreadPerChannelEventLoopGroup(int maxChannels)
ThreadPerChannelEventLoopGroup.maxChannels - the maximum number of channels to handle with this instance. Once you try to register
a new Channel and the maximum is exceed it will throw an
ChannelException. on the register(Channel) and
register(ChannelPromise) method.
Use 0 to use no limitprotected ThreadPerChannelEventLoopGroup(int maxChannels,
java.util.concurrent.ThreadFactory threadFactory,
java.lang.Object... args)
ThreadPerChannelEventLoopGroup.maxChannels - the maximum number of channels to handle with this instance. Once you try to register
a new Channel and the maximum is exceed it will throw an
ChannelException on the register(Channel) and
register(ChannelPromise) method.
Use 0 to use no limitthreadFactory - the ThreadFactory used to create new Thread instances that handle the
registered Channelsargs - arguments which will passed to each newChild(Object...) call.protected ThreadPerChannelEventLoopGroup(int maxChannels,
java.util.concurrent.Executor executor,
java.lang.Object... args)
ThreadPerChannelEventLoopGroup.maxChannels - the maximum number of channels to handle with this instance. Once you try to register
a new Channel and the maximum is exceed it will throw an
ChannelException on the register(Channel) and
register(ChannelPromise) method.
Use 0 to use no limitexecutor - the Executor used to create new Thread instances that handle the
registered Channelsargs - arguments which will passed to each newChild(Object...) call.protected EventLoop newChild(java.lang.Object... args) throws java.lang.Exception
EventLoop. The default implementation creates a new ThreadPerChannelEventLoop.java.lang.Exceptionpublic java.util.Iterator<EventExecutor> iterator()
iterator in interface EventExecutorGroupiterator in interface java.lang.Iterable<EventExecutor>public EventLoop next()
EventLoopGroupEventLoop to usenext in interface EventLoopGroupnext in interface EventExecutorGrouppublic Future<?> shutdownGracefully(long quietPeriod, long timeout, java.util.concurrent.TimeUnit unit)
EventExecutorGroupEventExecutorGroup.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.shutdownGracefully in interface EventExecutorGroupquietPeriod - the quiet period as described in the documentationtimeout - the maximum amount of time to wait until the executor is EventExecutorGroup.shutdown()
regardless if a task was submitted during the quiet periodunit - the unit of quietPeriod and timeoutEventExecutorGroup.terminationFuture()public Future<?> terminationFuture()
EventExecutorGroupFuture which is notified when all EventExecutors managed by this
EventExecutorGroup have been terminated.terminationFuture in interface EventExecutorGroup@Deprecated public void shutdown()
shutdown in interface EventExecutorGroupshutdown in interface java.util.concurrent.ExecutorServiceshutdown in class AbstractEventExecutorGrouppublic boolean isShuttingDown()
EventExecutorGrouptrue if and only if all EventExecutors managed by this EventExecutorGroup
are being shut down gracefully or was shut down.isShuttingDown in interface EventExecutorGrouppublic boolean isShutdown()
isShutdown in interface java.util.concurrent.ExecutorServicepublic boolean isTerminated()
isTerminated in interface java.util.concurrent.ExecutorServicepublic boolean awaitTermination(long timeout,
java.util.concurrent.TimeUnit unit)
throws java.lang.InterruptedException
awaitTermination in interface java.util.concurrent.ExecutorServicejava.lang.InterruptedExceptionpublic ChannelFuture register(Channel channel)
EventLoopGroupChannel with this EventLoop. The returned ChannelFuture
will get notified once the registration was complete.register in interface EventLoopGrouppublic ChannelFuture register(ChannelPromise promise)
EventLoopGroupChannel with this EventLoop using a ChannelFuture. The passed
ChannelFuture will get notified once the registration was complete and also will get returned.register in interface EventLoopGroup@Deprecated public ChannelFuture register(Channel channel, ChannelPromise promise)
EventLoopGroupChannel with this EventLoop. The passed ChannelFuture
will get notified once the registration was complete and also will get returned.register in interface EventLoopGroupprivate EventLoop nextChild() throws java.lang.Exception
java.lang.Exception