在构造函数中被赋值,并传入传入runnable接口,方法里面循环select,然后处理找到的key
但是这个thread是什么时候被start的呢?
在bootstrap bind的逻辑里,后半部分是bind 新建的绑定端口的文件(serversocketImpl)到selector的实现 windowselectorimpl上去,而前半部分是,init & register,
新建一个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方法。
如果已经启动,那么往task任务里添加任务,如果没有的话,先启动线程,再添加任务。