Netty 组件介绍
EventLoop
在《Java NIO到Netty(四)》中,可以看到,我们把ServerSocketChannel和SocketChannel均注册到一个Selector中,这个Selector在while循环中不断轮询检查是否有Channel准备好事件,如下图所示
从上图中可以看到不管是监听是否有新的连接还是对Socket进行读写均在一个线程下完成的。
那么EventLoop也可以简单理解为是一个线程,其内部和一个Selector做了绑定,用于处理连接和读写事件等。
我们回到代码(1)处
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
...
b.group(bossGroup, workerGroup)
这里我们是设置了两个EventLoop线程组,并设置到ServerBootstrap中。其中bossGroup是专门负责接口连接请求的也就是处理OP_ACCEPT事件,workerGroup专门用于处理I/O操作也就是OP_READ事件。可以用下图来表示: