第一章Netty,Selector之cancel

发布时间:2026/6/30 14:12:56
第一章Netty,Selector之cancel 基于前文对 NIO Selector 事件循环、selectedKeys 手动移除机制及连接断开处理的讨论,SelectionKey.cancel() 是‌取消注册‌的关键操作。它告诉 Selector 不再监控该通道的事件,是资源清理和防止内存泄漏的核心步骤。接着看上次的代码这里,我们启动了客户端,但是select事件未处理,测试,服务端就会不停的空转,消耗cpu。这时候我们使用SelectionKey.cancel() 就是防止资源浪费和内存泄漏一、核心作用与触发场景key.cancel() 的主要目的是将键从 Selector 的注册集合中移除,通常发生在以下场景:客户端断开连接‌:当 read() 返回 -1 时。发生异常‌:在 try-catch 块中捕获到 IO 异常时。业务逻辑终止‌:主动关闭某个连接或停止监控某通道时。二、代码实现示例结合前文简洁版示例,展示 cancel 的标准用法:elseif(key.isReadable