前面分析到DefaultChannelHandlerInvoker
其被SingleThreadEventLoop 引用,并创建DefaultChannelHandleInvoker
先来分析下Eventloop 以及 EventloopGroup
Eventloop
定义了 asInoker 返回前面的 DefaultChannelHandlerInvoker
EventLoopGroup
其中register方法,把channel注册到eventloop中。
EventExecutor
这个类不属于channel里面的,就是一个定时线程池,简单的一笔带过,后续来分析
register
重点看下这个方法,同时也扯出了下一章的类AbstractUnsafe
public ChannelFuture register(final Channel channel, final ChannelPromise promise) {
if (channel == null) {
throw new NullPointerException("channel");
}
if (promise == null) {
throw new NullPointerException("promise");
}
channel.unsafe().register(this, promise);
return promise;
}