# 初始化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 的实现,并且可以通过构造函数来配置他们的关系。
← Netty实战