Netty 源码阅读入门实战(四)-NioEventLoop
2018-07-14 本文已影响11人
紫霞等了至尊宝五百年
1 NioEventLoop概述
![](https://img.haomeiwen.com/i4685968/ee070782cb00af33.png)
-
总述
2 NioEventLoop创建概述
![](https://img.haomeiwen.com/i4685968/459f85717122be7b.png)
![](https://img.haomeiwen.com/i4685968/d640dcef65e6f4c0.png)
![](https://img.haomeiwen.com/i4685968/a34c0a8e0dd8a665.png)
![](https://img.haomeiwen.com/i4685968/7f0692e034e954da.png)
![](https://img.haomeiwen.com/i4685968/6144b18030200921.png)
![](https://img.haomeiwen.com/i4685968/695aac32e41d6dbf.png)
![](https://img.haomeiwen.com/i4685968/ecbef4eb1a3589a4.png)
![](https://img.haomeiwen.com/i4685968/42545b1301af1a37.png)
![](https://img.haomeiwen.com/i4685968/92b9dfa9feeb5ece.png)
![](https://img.haomeiwen.com/i4685968/f9c2f0f4c33de613.png)
对应
![](https://img.haomeiwen.com/i4685968/7b77738754034387.png)
![](https://img.haomeiwen.com/i4685968/283011841828f8b7.png)
对应
![](https://img.haomeiwen.com/i4685968/efd93667f5f8d717.png)
![](https://img.haomeiwen.com/i4685968/1a6c8240d41e671f.png)
对应
![](https://img.haomeiwen.com/i4685968/f21429456ae6e534.png)
![](https://img.haomeiwen.com/i4685968/18b350953b6ebcf3.png)
对应
![](https://img.haomeiwen.com/i4685968/df02b051ca87483c.png)
3 ThreadPerTaskThread
2 服务端Channel的创建
![](https://img.haomeiwen.com/i4685968/86d32662d7f5c5c3.png)
![](https://img.haomeiwen.com/i4685968/683626bd36cb095d.png)
![](https://img.haomeiwen.com/i4685968/aa7c624a990c8a1a.png)
![](https://img.haomeiwen.com/i4685968/612eac5499fc0d0e.png)
bind 对应样例的
![](https://img.haomeiwen.com/i4685968/b7d90841010140ef.png)
![](https://img.haomeiwen.com/i4685968/f698504f60b4fbb2.png)
![](https://img.haomeiwen.com/i4685968/8a9bd92f83cc6dae.png)
![](https://img.haomeiwen.com/i4685968/272fbb17c4bd93e0.png)
![](https://img.haomeiwen.com/i4685968/6888d5bbf8dbb670.png)
![](https://img.haomeiwen.com/i4685968/7a87877f5df49f4e.png)
看看 channelFactory
![](https://img.haomeiwen.com/i4685968/23d9fcbdb1291c15.png)
![](https://img.haomeiwen.com/i4685968/15f80b12cd2cc140.png)
-
反射创建服务端 Channel
首先
创建完毕了
-
ANC
4 创建NioEventLoop线程
![](https://img.haomeiwen.com/i4685968/311997d923b2c242.png)
![](https://img.haomeiwen.com/i4685968/152e028f1043ea95.png)
![](https://img.haomeiwen.com/i4685968/617246b522088305.png)
![](https://img.haomeiwen.com/i4685968/2d1e4c860780b77c.png)
![](https://img.haomeiwen.com/i4685968/f9901a16ff4ad766.png)
![](https://img.haomeiwen.com/i4685968/1b70d15f682a22d2.png)
![](https://img.haomeiwen.com/i4685968/8ed4852b3a102401.png)
![](https://img.haomeiwen.com/i4685968/574ad47d7e67a3b2.png)
![](https://img.haomeiwen.com/i4685968/f5cf21118323415b.png)
5 创建线程选择器
![](https://img.haomeiwen.com/i4685968/9568f4277661d680.png)
![](https://img.haomeiwen.com/i4685968/7b48ae95bf2ec67c.png)
![](https://img.haomeiwen.com/i4685968/316604a5d3803c8f.png)
![](https://img.haomeiwen.com/i4685968/5ef1e44f52b8b2b8.png)
-
先看看普通的
-
再看幂2的
循环取数组索引下标,& 比取模性能更高
6 NioEventLoop的启动
![](https://img.haomeiwen.com/i4685968/3638614953809556.png)
![](https://img.haomeiwen.com/i4685968/bd49561feab52826.png)
![](https://img.haomeiwen.com/i4685968/d231fca5bce8c05a.png)
对应是
![](https://img.haomeiwen.com/i4685968/a9367ee17523166c.png)
![](https://img.haomeiwen.com/i4685968/9f455c0a41c11163.png)
对应是
![](https://img.haomeiwen.com/i4685968/edbd07371970a006.png)
![](https://img.haomeiwen.com/i4685968/d70346e2e29d9ad4.png)
![](https://img.haomeiwen.com/i4685968/5498d3528015f905.png)
![](https://img.haomeiwen.com/i4685968/2be0e8376011c964.png)
![](https://img.haomeiwen.com/i4685968/0ad1d1b9ca129c91.png)
![](https://img.haomeiwen.com/i4685968/66ba8f5ecdfb731f.png)
![](https://img.haomeiwen.com/i4685968/38fc32560204e8c5.png)
![](https://img.haomeiwen.com/i4685968/9e294c4c5adedcc0.png)
![](https://img.haomeiwen.com/i4685968/ff0c453c3a041d17.png)
![](https://img.haomeiwen.com/i4685968/2f8d97f706ad9bf3.png)
![](https://img.haomeiwen.com/i4685968/de9019952b56aa6c.png)
![](https://img.haomeiwen.com/i4685968/fe28c469ea125cf0.png)
![](https://img.haomeiwen.com/i4685968/b2e1e12fbd91f417.png)
7 NioEventLoop执行概述
8 检测IO事件
![](https://img.haomeiwen.com/i4685968/fb93bed02a310f5e.png)
![](https://img.haomeiwen.com/i4685968/2f6cb856b39c9bb9.png)
对应的源码为
![](https://img.haomeiwen.com/i4685968/061fa330912427a1.png)
![](https://img.haomeiwen.com/i4685968/148ab7f1aa76ba07.png)
![](https://img.haomeiwen.com/i4685968/6d3d2598f46c68b5.png)
![](https://img.haomeiwen.com/i4685968/a967efba9de8f2d7.png)
![](https://img.haomeiwen.com/i4685968/e572778ac0f5a684.png)
对应的源码为
![](https://img.haomeiwen.com/i4685968/1ca6d8769e8732cf.png)
![](https://img.haomeiwen.com/i4685968/941e56aaabab0865.png)
![](https://img.haomeiwen.com/i4685968/7b42782a5f08676a.png)
![](https://img.haomeiwen.com/i4685968/65ebaa284d31f374.png)
![](https://img.haomeiwen.com/i4685968/ab48c10e57d808cc.png)
![](https://img.haomeiwen.com/i4685968/46aac449d0a444ee.png)
![](https://img.haomeiwen.com/i4685968/d9d29eac1aa701a7.png)
![](https://img.haomeiwen.com/i4685968/6e3f2b4d40cab37a.png)
![](https://img.haomeiwen.com/i4685968/3e00b5555fcdf2ea.png)
避免空轮询的再次发生
![](https://img.haomeiwen.com/i4685968/7da0be4df172154f.png)
![](https://img.haomeiwen.com/i4685968/1f65112842eb792f.png)
![](https://img.haomeiwen.com/i4685968/e3f4a7620fda85a6.png)
![](https://img.haomeiwen.com/i4685968/3c81f497e2646a07.png)
![](https://img.haomeiwen.com/i4685968/d822dbdf38211c8d.png)
![](https://img.haomeiwen.com/i4685968/cc488ebf015ef350.png)
9 处理IO事件
![](https://img.haomeiwen.com/i4685968/999da127e0c92b0f.png)
![](https://img.haomeiwen.com/i4685968/1b9efc780507b674.png)
![](https://img.haomeiwen.com/i4685968/6e75c405b6378c6b.png)