NioEventLoop中的thread什么时候启动

时间:2023-03-09 18:04:07
NioEventLoop中的thread什么时候启动

在构造函数中被赋值,并传入传入runnable接口,方法里面循环select,然后处理找到的key

但是这个thread是什么时候被start的呢?

在bootstrap bind的逻辑里,后半部分是bind 新建的绑定端口的文件(serversocketImpl)到selector的实现 windowselectorimpl上去,而前半部分是,init & register,

NioEventLoop中的thread什么时候启动

NioEventLoop中的thread什么时候启动

NioEventLoop中的thread什么时候启动

NioEventLoop中的thread什么时候启动

NioEventLoop中的thread什么时候启动

NioEventLoop中的thread什么时候启动

新建一个channel,用father loopgroup中的next loop 把channel给注册到selector上,根据之前的分析,loopgroup在new的时候,会建一个 loop的数组,实例化每一个loop,loop实例化的时候,1、会new一个thread,把run方法中的逻辑传进去,就是

循环 select,然后处理key。2、会新建一个selector,放到loop中。

那么,现在这个loop要注册channel到自己的selector上了,要检测自己有没有运行起来,如果没有的话,执行execute方法。

NioEventLoop中的thread什么时候启动

如果已经启动,那么往task任务里添加任务,如果没有的话,先启动线程,再添加任务。