loop是对thread的封装,里面记录一个selector
一套打完,看下来,就是loopgroup里面一个loop的数组,每一个loop在 new的时候,传入了selector(第二个箭头),
第一个箭头是调用父类的构造函数
loop对selector进行封装,对thread进行初始化,传入一个实现了runnable接口的,调用自己(SingleThreadEventExecutor)的run方法(抽象,待子类改写)
nioevntloop中的run方法是这样的:
可以看到,thread一旦启动,会调用selectnow(select()最后也是调这个方法),最后调用的是poll方法
而processSelectedKey方法
根据key的属性,进行相应的读写操作