首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Netty业务代码执行流程源码解析

Netty业务代码执行流程源码解析

作者头像
JavaEdge
发布2021-02-22 13:38:59
发布2021-02-22 13:38:59
3300
举报
文章被收录于专栏:JavaEdgeJavaEdge

worker thread

执行示意图

Handler执行资格:

  • 实现了ChannellnboundHandler
  • 实现方法channelRead不能加注解@Skip

执行流程

  • 多路复用器( Selector )接收到OP_ READ事件
  • 处理 OP_READ事件: NioSocketChannel.NioSocketChannelUnsafe.read
  • 分配一个初始1024字节的byte buffer来接受数据
  • 从 Channet接受数据到byte buffer
  • 记录实际接受数据大小, 调整下次分配byte buffer大小

触发pipeline.fireChannelRead(byteBuf)把读取到的数据传播出去

判断接受 byte buffer是否满载而归:是,尝试继续读取直到没有数据或满16次;否,结束本轮读取,等待下次OP_READ事件

处理业务的本质

数据在pipeline中所有的handler的channelRead()执行过程。

  • Handler要实现io.netty.channel.ChannelnboundHandler#channelRead (ChannelHandlerContext ctx,Object msg),且不能加注解@Skip才能被执行到。
  • 中途可退出,不保证执行到Tail Handler。

默认处理线程就是Channel绑定的NioEventLoop线程,也可以设置其他

代码语言:javascript
复制
pipeline.addLast(new UnorderedThreadPoolEventExecutor(10), serverHandler)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 执行示意图
  • 执行流程
  • 处理业务的本质
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档