本文共 1186 字,大约阅读时间需要 3 分钟。
NioEventLoop 是 Netty 项目中用于处理 I/O 事件的核心线程模型。它基于 Reactor 线程模型,专注于非阻塞 I/O 操作,能够高效处理大量连接。
Reactor 线程模型主要包括以下三个部分:
NioEventLoop 的创建过程如下:
ServerBootstrap.bind() 方法。doBind() 方法,创建服务端 Channel。当服务端启动时,ServerBootstrap.bind() 方法会触发以下流程:
AbstractBootstrap.doBind() 方法。当新连接接入时,通过 Chooser 绑定一个 NioEventLoop。
调用 NioEventLoop.inEventLoop() 方法判断当前线程是否为 Reactor 线程。NioEventLoop 会将线程实体保存到自身的成员变量中。
如果当前线程不是 NioEventLoop 线程,会执行以下步骤:
SingleThreadEventExecutor.startThread() 方法启动线程。ThreadPerTaskExecutor 创建一个 FastThreadLocalThread 线程。run() 方法启动线程。NioEventLoop 启动流程:
AbstractUnsafe.register() 方法。run() 方法驱动 Netty 运转的核心逻辑。通过以上流程,NioEventLoop 能够高效管理和处理 I/O 事件,确保服务端 Channel 正确注册到 Selector 上。
转载地址:http://fvcfk.baihongyu.com/