2021SC@SDUSC
NioEventloopGroup
类结构图:
很遗憾我的idea不是旗舰版,所以未能找到我现在正在研究的netty类图结构,只能先用这个看下
既然是叫事件执行器组,那就是和多个事件执行器工作相关的功能
注册和next
这里我的理解是多线程和事件执行器嘛,比较关键的是这个newChild,上边的也只是分析了解即可,这个new NioEventLoopGroup();话有一个返回值是NioEventLoop,大致也是组和个体的关系
可以看到在这个简单的服务器搭建的代码中,首先就是初始化了NioEventLoopGroup,首先可以ctrl跟进查看如何初始化
new NioEventLoopGroup();
为了方便,把接下来进入的方法和个人解析都放到代码块里。
public NioEventLoopGroup() {
this(0);
}
//一开始没什么好说的,不断地指向下一个方法,并且添加了新的参数,都是常见好理解的参数
//这里是线程,是指之后要创建的线程的数量,这个时候进入的是无参方法的路径,所以默认是0。
//如果是有参的构造方法,那这里就不是0了
public NioEventLoopGroup(int nThreads) {
this(nThreads, (Executor) null);
}
//executor:线程执行器,默认是 null
//这个属性的值会在后面创建 NioEventLoop 时,进行初始化。
//用户可以自定义executor,如果用户自定义实现,那么此时 executor 就不为 null,后面就也会再初始化。
public NioEventLoopGroup(int nThreads, Executor executor) {
this(nThreads, executor, SelectorProvider.provider());
}
//SelectorProvider.provider():通过它创建出一个 SelectorProvider 对象
//这个对象的作用就是创建多路复用器 Selector 和服务端 channel。
public NioEventLoopGroup(
int nThreads, Executor executor, final SelectorProvider selectorProvider) {
this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);
}
//通过DefaultSelectStrategyFactory.INSTANCE 创建选择策略工厂,具体看后边。