news 2026/6/23 9:48:35

关于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/6/22 23:51:11

Kotaemon能否实现知识热度排行与推荐?

Kotaemon能否实现知识热度排行与推荐? 在企业智能客服、内部知识助手等场景中,用户不再满足于“问一句答一句”的被动响应模式。他们期待系统能像一位熟悉业务的老员工那样,主动察觉问题趋势,推荐高频解决方案,甚至预判…

作者头像 李华
网站建设 2026/6/23 16:45:42

实时金融交易系统设计秘籍(Agent执行效率翻倍的4种架构模式)

第一章:金融交易 Agent 的执行速度在高频交易和算法交易系统中,金融交易 Agent 的执行速度直接决定了策略的盈利能力与市场竞争力。毫秒级甚至微秒级的延迟差异,可能导致截然不同的成交价格和套利机会的得失。因此,优化 Agent 从信…

作者头像 李华
网站建设 2026/6/22 16:58:12

揭秘气象观测 Agent 数据采集难题:如何确保数据完整性与时效性?

第一章:气象观测 Agent 数据采集的核心挑战在构建分布式气象观测系统时,Agent 作为边缘数据采集单元,承担着从传感器获取温度、湿度、气压等关键环境参数的职责。然而,在实际部署中,这些 Agent 面临诸多技术挑战&#…

作者头像 李华
网站建设 2026/6/22 22:49:04

MindSpore开发之路(四):核心数据结构Tensor

1. 什么是张量(Tensor)?—— AI世界的数据基石 在前面的文章中,我们已经和Tensor打过几次照面。现在,让我们正式地认识它。 从数学上讲,张量是一个多维数组。这个概念可能有点抽象,我们可以用更…

作者头像 李华
网站建设 2026/6/23 9:23:33

37、调试与系统安全技术综合解析

调试与系统安全技术综合解析 1. 调试基础 调试是软件开发和系统维护中至关重要的环节。在调试过程中,有多种工具和技术可供使用。例如,Debugging Tools for Windows 包含了 CDB(cdb.exe)、KD(kd.exe)、NTSD(ntsd.exe)和 WinDbg(windbg.exe)等工具。这些工具各有特点…

作者头像 李华
网站建设 2026/6/23 18:57:30

kali linux渗透测试之漏洞扫描

主题内容就是进行漏洞扫描 文章目录 前言一、Nikto * 1.Nikto漏洞扫描介绍2.Nikto使用 二、Nessus * 1.Nessus介绍2.安装nessus3.nessus的简单使用3.nessus扫描之advanced scan 三、 skipfish扫描工具 * 1.介绍2.skipfish的使用3.批量处理4.使用字典5.命令选项6.打开文件 四、…

作者头像 李华