Netty(五):ServerBootstrap启动流程

这篇文章主要是对ServerBootstrap启动流程作一个梳理,方便咱们串联起各个类,同时也对主要的一些类有个大概的印象,方便以后逐个类的深刻学习。html

本篇文章不在具体贴出代码,而是对整个启动流程画了一个时序图,方便咱们直观的了解各个过程,读者能够照着时序图,本身跟踪一遍代码,了解整个过程。oop

 清晰大图点此学习

 

参照上面的流程图,咱们对整个启动过程作一个简单的归纳。rest

启动流程大概能够分为三个步骤:初始化,注册,绑定。htm

1).初始化主要的过程:建立Channel对象,为Channel配置属性及选项,添加对应的handler。对象

2).注册的主要过程:将channel与eventLoop绑定;调用内部封装的ServerSocketChannel注册interestOps;注册完成后,调用pipeline产生对应的事件(fireChannelRegister,以及可能的Actived事件)blog

3).绑定的主要过程:调用内部封装的ServerSocketChannel绑定端口,绑定成功后(fireChannelActived)事件

 

同时我在看代码的时候,也有一些问题仍然没有头绪:ip

问题1:ServerSocketChannel注册的interestOps为什么是0?咱们知道SelectionKey中OP_READ为1;OP_WRITE为4;OP_CONNECT为8;OP_ACCEPT为16。那注册0表示什么意思?get

问题2:了解NIO的同窗应该知道,ServerSocketChannel应该在注册对应Connect或是Accept之类的事件,而后在有链接时,产生SocketChannel,那么Netty是在何处实现这部分的操做的?

 回答见Netty学习系列六