* */
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
//创建服务器的启动对象,配置参数
ServerBootstrap serverBootstrap = new ServerBootstrap();
//使用链式编程进行配置
serverBootstrap.group(bossGroup,workerGroup)//设置两个线程组
.channel(NioServerSocketChannel.class)//使用NioSocketChannel 作为服务器
.option(ChannelOption.SO_BACKLOG,128)//设置线程队列得到链接个数
.childOption(ChannelOption.SO_KEEPALIVE,true)//设置保持链接活动连接状态
.childHandler(new ChannelInitializer<SocketChannel>() {//创建一个通道测试对象
方法serverBootStrap.group()
/**
* Set the {@link EventLoopGroup} for the parent (acceptor) and the child (client). These
* {@link EventLoopGroup}'s are used to handle all the events and IO for {@link ServerChannel} and
* {@link Channel}'s.
*/
public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup) {
childHandler()和childOption()都是给workerGroup (也就是group方法中的childGroup参数)进行设置的,option()和handler()都是给bossGroup(也就是group方法中的parentGroup参数)设置的。
还有一种方法说option()和handler()是在server启动时进行设置和调用,childHandler()和childOption()是在连接建立是设置和调用的。其实都是对的。
bossGroup是在服务器一启动就开始工作,负责监听客户端的连接请求。当建立连接后就交给了workGroup进行事务处理,两种是从不同的角度解释的。