这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战
今天我们来了解一下Netty里面服务启动的过程,使用Netty你只需要半个小时,但是了解它你却需要很长时间,没关系,我相信这是值得的。
Selector的创建
首先是对服务器的一个配置,先是初始化了两个EventLoopGroup
,这里就使用的是主从Reactor模型了,Netty起了两个很好的名字bossGroup和workerGroup。
这里就是这个selector的创建了。
那selector
是什么时候创建的呢?我们可以查看一下堆栈信息。
首先,服务是在52的位置启动,启动之后呢,初始化了这个NioEventLoopGroup,,然后到第142的位置的时候,初始化了一个NioEventLoop,之后Selector就被创建了。
ServerSocketChannel的创建
然后,绑定一个端口,开启服务,这步是一个同步过程,只有执行完,才能执行下一步。
这里进行校验,然后执行doBind方法,一般我们的doBind都是干活的方法,我们来看下。
这里有个初始化注册方法,我们点进去看下。
点进去之后呢是创建一个channel,我们看看创建之后有什么。
发现呢里面已经有一个ServerSocketChannel,就是说这个ServerSocketChannel已经被创建了,接着初始化这个Channel。
紧接着是注册,那么注册是干什么呢》注册就是把我们的这个ServerSocketChannel注册到我们的这个NioEventLoopGroup里面的这个Selector上。
注册这里面用到了一个选择,next是表示选择,里面有两种实现,先不讲了。
然后是register方法
然后,我们回到原来的方法,返回值是个Future,说明是个异步过程,写不完了有点。
本文转载自: 掘金