news 2026/4/16 18:29:59

关于Netty框架中boss线程和work线程是如何协调工作的源码分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于Netty框架中boss线程和work线程是如何协调工作的源码分析

服务端的boss线程是接收请求,work是处理对应每个连接的后续业务处理和IO操作。这块功能的处理机制源码分析如下:

(1)首先是用boss线程进行绑定端口并注册到从boss线程取出来的NioEventLoop对象上,然后NioEventLoop对象会在run方法里无限循环监听Selector的key。

(2)如果有客户端发起连接请求了,监听到连接成功或者读取事件,就会调用unsafe.read()方法,此时是是调用io.netty.channel.nio.AbstractNioMessageChannel.NioMessageUnsafe#read方法,此类对应的会调用实现类io.netty.channel.socket.nio.NioServerSocketChannel#doReadMessages方法。

(3)将接受到的客户端请求SocketChannel对象封装到msg消息里,然后执行pipeline.fireChannelRead方法进行管道传播处理,此时管道处理器里是放置了ServerBootstrapAcceptor方法来处理(此管道是服务端ServerBootstrap在初始化绑定监听时加入的)。

(4)ServerBootstrapAcceptor类的channelRead方法被触发调用,此方法会将接收到的客户端请求SocketChannel对象进行注册到子线程(即work线程池)childGroup.register(child),后续此条客户端的连接处理都有此子线程的NioEventLoop对象进行调用和处理,直到连接关闭。从而实现了boss线程接受请求到转给work线程进行处理具体的业务逻辑。

附加:

默认情况下,当创建NioEventLoopGroup的时候,如果不指定线程数量,则线程数量默认为CPU核心数*2,基本能符合常规的场景使用,跟可以实际场景来进调试work线程(例如CPU*3、CPU*4)。同时boss线程池,如果只绑定一个端口和ip,一个线程就够用,线程多了只是浪费资源没使用到,故常规的线程池创建时可以这么定义:

EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workGroup = new NioEventLoopGroup();


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:03:21

低功耗农业传感系统实战(从选型到部署的10个关键步骤)

第一章:低功耗农业传感系统的背景与意义随着全球人口持续增长和气候变化加剧,农业生产面临资源紧张与效率提升的双重挑战。传统农业依赖人工观测与经验决策,难以实现精细化管理。低功耗农业传感系统应运而生,通过部署在田间的传感…

作者头像 李华
网站建设 2026/4/16 12:03:52

从传感器融合到实时决策:构建高可靠农业无人机避障系统的8个关键步骤

第一章:农业无人机避障系统的演进与挑战随着精准农业的快速发展,农业无人机在植保、播种、监测等环节的应用日益广泛。避障系统作为保障无人机安全飞行的核心模块,经历了从基础传感器组合到智能感知融合的技术跃迁。早期系统依赖超声波与红外…

作者头像 李华
网站建设 2026/4/16 12:59:24

成本飙升预警,Azure量子项目如何在7天内实现预算可控?

第一章:MCP Azure 量子成本控制的紧迫性与背景随着量子计算技术在微软Azure平台上的逐步落地,企业开始将复杂优化、密码分析和分子模拟等关键任务迁移至MCP(Microsoft Cloud for Quantum Processing)环境。然而,量子资…

作者头像 李华
网站建设 2026/4/16 11:10:30

【紧急响应】DP-420图Agent服务不可用?这4种场景你必须掌握

第一章:MCP DP-420 图 Agent 故障响应概述在分布式监控系统中,MCP DP-420 图 Agent 作为关键的指标采集组件,承担着从目标服务收集性能数据并上报至中央管理平台的核心职责。当图 Agent 出现异常或中断时,将直接影响监控链路的完整…

作者头像 李华
网站建设 2026/4/16 11:00:59

29、调试利器:DebugDiag与!analyze命令的高效运用

调试利器:DebugDiag与!analyze命令的高效运用 在软件开发和调试过程中,快速准确地定位和解决问题至关重要。本文将介绍两款强大的调试工具:DebugDiag和!analyze扩展命令,它们能显著减少初始故障分析所需的时间。 DebugDiag自定义脚本 DebugDiag是一款功能强大的调试工具…

作者头像 李华
网站建设 2026/4/16 11:02:13

拆解60寸小米电视,看下16年总价4699的设计都有谁代工?

最近拿到了一个60寸小米的大电视,是16年生产的。当时,小米正在开拓市场,我们拆开看看这个产品用料怎么样,都是谁代工的,有什么芯片。这个电视是可以开机的,但只有一个开机按键,没有操作键&#…

作者头像 李华