# 初始化NioEventLoopGroup

Netty源码分析:1.1初始化NioEventLoopGroup (opens new window)

# 1.new NioEventLoopGroup()

当我们调用new NioEventLoopGroup()时,NioEventLoopGroup 类将会自动调用自己的有参构造函数,并且调用父类的有参构造进行初始化。

# 参数

int nThreads 建立多少个线程数,如果传入是0.则默认是cpu*2的个数。

Executor executor 初始化是null

SelectorProvider selectorProvider 是一个SelectorProvider.provider()的返回值。

RejectedExecutionHandler 是一个处理异常的类

# 注意:

SelectorProvider就是为了创建DatagramChannel,Pipe,Selector,ServerSocketChannel,SocketChannel,System.inheritedChannel()而服务的

# MultithreadEventLoopGroup

父类进行初始化

# 总结

NioEventLoopGroup初始化:建立默认cup核数*2个的NioEventLoop。

当有一个channel新连接的时候,将该channel与一个NioEventLoop绑定,该channel的任务全部交给NioEventLoop执行了

NioEventLoopGroup是用来处理I/O操作的多线程事件循环器,Netty 提供了许多不同的 EventLoopGroup 的实现用来处理不同的传输。在这个例子中我们实现了一个服务端的应用,因此会有2个 NioEventLoopGroup 会被使用。第一个经常被叫做‘boss’,用来接收进来的连接。第二个经常被叫做‘worker’,用来处理已经被接收的连接,一旦‘boss’接收到连接,就会把连接信息注册到‘worker’上。如何知道多少个线程已经被使用,如何映射到已经创建的 Channel上都需要依赖于 EventLoopGroup 的实现,并且可以通过构造函数来配置他们的关系。