【超详细解释】从Java NIO到Netty的每一步 (七)

Netty 组件介绍

Pipeline

在Netty中,一个Channel对应一个Pipeline,对这个Channel的所有处理逻辑都在Pipeline中执行,Pipeline是一个双向链表,每个节点都是一个ChannelHandlerContext对象,这个对象能够拿到和Channel相关的所有的上下文信息,然后这个对象包着一个重要的对象,那就是逻辑处理器 ChannelHandler。
对应抛弃服务的代码,Pipeline可以表示成下面的结构:

我们自己定义的DiscardServerHandler会夹在Netty已有的首尾ChannelHandlerContext对象之间从而形成上述的双向链表结构。
接下来我们继续看抛弃服务代码注释(3),我们自己的handler继承了一个ChannelInboundHandlerAdapter,我们这里也介绍一下Inbound是个什么概念。
在Pipeline中,事件传播分两种:Inbound事件和Outbound 事件,我们拿Netty源码中的一张截图来更好的理解一下。

从上图左侧内容可以看出,Inbound事件由Socket的read事件触发,并从底部的Inbound Handler1通过调用ChannelHandlerContext.fireIN_EVT()逐一向上处理。而outbound刚好相反,是从上到下。其实就是将需要做的事情切割成了不同的阶段,每个阶段由独立的单元负责。

关注我日常更新分享Java编程技术!希望大家都能早日走上人生巅峰!

【领取资料】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛战士从不脱下面具

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值