当前位置: 首页 > news >正文

第一章Netty,Selector key用完要remove

基于前文对 NIO Selector 事件循环机制、selectedKeys 集合特性及 key.cancel() 清理逻辑的讨论,selector.selectedKeys() 返回的集合‌不会自动清空‌。若不调用 iterator.remove(),会导致严重的逻辑错误和性能问题。

一、核心原因:防止重复处理

‌集合特性‌:
selector.selectedKeys() 是一个‌累积集合‌。每次 select() 方法发现就绪通道时,会将对应的 SelectionKey ‌添加‌到该集合中,而‌不是替换‌。
‌后果‌:
若不移除,下一次循环时,该键依然存在于集合中。即使该通道已无新事件,代码仍会再次执行 isAcceptable 或 isReadable 判断。
‌对于读事件‌:可能导致对同一批数据重复处理,或因读取返回 0 而陷入死循环。
‌对于接受事件‌:可能导致重复调用 accept(),引发异常或逻辑混乱。

二、代码对比说明

❌ 错误做法(未 remove)

Set<SelectionKey>keys=selector.selectedKeys();for(SelectionKeykey:keys){// 或使用 iterator 但不 removeif(key.isReadable()){// 第一次循环:处理数据}// 第二次循环:key 仍在集合中,再次进入此分支!}// 下次 select() 后,旧 key 和新 key 混在一起,全部被处理

✅ 正确做法(必须 remove)

Iterator<SelectionKey>iterator=selector.selectedKeys().iterator();while(iterator.hasNext()){SelectionKeykey=iterator.next();iterator.remove();// 1. 立即从当前就绪集合中移除if(key.isReadable()){// 仅在本次事件中处理一次
http://www.jsqmd.com/news/1100437/

相关文章:

  • 勒索攻击防御三大认知误区:备份神话、侥幸心理与赎金陷阱
  • 别再只用OCV了!Primetime POCV实战:从变量设置到看懂报告,一次搞定
  • 云克隆神经相关原代细胞:以高保真细胞模型驱动神经科学研究新突破
  • 别再写if-else了!用PySide6信号槽重构你的登录跳转逻辑,代码更清晰
  • HarmonyOS NEXT开发环境搭建(2026最新版)——从下载安装到运行第一个项目,全网最详细教程
  • 前期准备:
  • Codex快速入门了解指南
  • 你拖一下,3D 轨迹凭什么就转了?一文看懂 WebGL 渲染管线
  • 一线观察:长期体验后发现的奥迪改装市场底层现象
  • 2026年节假日聚餐后脾虚湿热调养指南:辨证与方案详解
  • Gemini镜像站 解决 Linux 运维难题:2026 年镜像站的 Shell 自动化与故障排查实战
  • Postman便携版:Windows开发者必备的无安装API测试解决方案
  • 【技术白皮书】全自动焊线机选型参数基准:以铭硕智造为参照的0.1mm精密焊线标准解析
  • nRF52840开发实战:用GPIOTE事件触发实现低功耗按键检测(附完整代码)
  • 保姆级教程:用ADB命令调试MTK手机MFNR多帧降噪,从开关控制到图片Dump
  • 电力自动化调试不求人:手把手教你用IEC104 Client Simulator搞定主站模拟与报文分析
  • 口碑好的汝州装修企业
  • 别再折腾了!Win11/Mac下TeXLive+TeXStudio保姆级安装配置指南(含清华镜像加速)
  • 别再死记硬背了!用这5个CURLOPT参数搞定90%的日常网络请求(附Python/PHP代码示例)
  • 信创云PACS落地指南:从架构设计到临床实践的核心挑战与路径
  • 苹果遭遇史上最严重泄密,iPhone18 Pro核心机密全部流入暗网
  • AI 时代的 CSS:Tailwind 为什么成了“真香“工具
  • YOLOv7+DeepSORT实战:解决船舶跟踪ID乱跳的5个调参技巧(附代码)
  • 自我学习框架笔记
  • 梁文锋立即决定融资74亿。Claude Mythos一发布!!
  • 2026年AI观察:从虚拟走进现实,从追赶到同台
  • 全网精选 20 个高质量 CTF 练习平台,从入门小白到竞赛大神一站式刷题,练完轻松拿捏各类赛事题型
  • 标准物质厂家怎么选?专家详解选购关键要点
  • 如何用Chinese-ERJ模板轻松搞定《经济研究》期刊投稿:经济学者的排版救星
  • Spring Boot Actuator安全防护:Nginx与APISIX字符绕过漏洞深度解析与配置实践