Nettynetty

Netty 源码阅读入门实战(四)-NioEventLoop

2018-07-14  本文已影响11人  紫霞等了至尊宝五百年

1 NioEventLoop概述

2 NioEventLoop创建概述











对应




对应


对应


对应

3 ThreadPerTaskThread

2 服务端Channel的创建





bind 对应样例的


跟进调试




通过反射创建的 channel

看看 channelFactory



4 创建NioEventLoop线程









5 创建线程选择器




6 NioEventLoop的启动




对应是




对应是












7 NioEventLoop执行概述

8 检测IO事件


对应的源码为







对应的源码为




执行至此,说明已进行了一次阻塞式的 select 操作
产生空轮询的判断
当空轮询次数大于阈值
阈值定义

阈值

避免空轮询的再次发生


创建新选择器
获取旧选择器的所有 key 值
netty 包装的 channel
将之前的 key 事件解除,并绑定新的选择器和对应的事件
更新选择器的 key
至此,解决了空轮bug

9 处理IO事件


原生JDK创建一个 selector
上一篇下一篇

猜你喜欢

热点阅读