在AbstractBootStrap
类的initAndRegister()
方法中,先进行对Channel
的初始化,在初始化过程结束之后,会执行Channel
的注册流程逻辑。如下图:
上图所示源码中,ChannelFuture regFuture = config().group().register(channel);
执行Channel
注册到EventLoop
上的流程。
1. config()
方法
先看该行代码中的第一个方法config()
:
该方法是一个抽象方法,返回的是AbstractBootstrapConfig
类,它可以获取到bootstrap
的当前配置。该抽象方法在AbstractBootstrapConfig
的子类Bootstrap
和ServerBootstrap
中实现。这里着重看一下ServerBootStrap
中的实现:
返回了一个成员变量config
,
是一个ServerBootstrapConfig
类,该类包含了ServerBootstrap
的所有配置。
2.group()
方法
该方法返回一个已经配置的EventLoopGroup
类,如果还未配置,则返回null
。
3.register(Channel channel)
方法
在该EventLoop
方法上注册一个Channel
,注册完成后,返回的ChannelFuture
将收到通知。因为NioEventLoopGroup
继承了MultiThreadEventLoopGroup
,所以在使用NioEventLoopGroup
进行编程时,框架内部调用的是MultiThreadEventLoopGr