[Netty] ChannelHandlerContext详解

ChannelHandlerContext组件


ChannelHandlerContext常叫ctx。

ChannelHandlerContext里就包含着ChannelHandler中的上下文信息,每一个ChannelHandler被添加都ChannelPipeline中都会创建一个与其对应的ChannelHandlerContextChannelHandlerContext的功能就是用来管理它所关联的ChannelHandler和在同一个ChannelPipeline中ChannelHandler的交互。
如下图就是ChannelPipeline和Channel和ChannelHandler和ChannelHandlerContext之间的关系
在这里插入图片描述
ChannelHandlerContext可以做到尽量减少它不感兴趣的ChannelHandler所带来的的开销,比如某个逻辑只需要某几个处理器,因此可以不用从头开始处理,直接从需要的第一个的ChannelHandler的地方进行处理。
在这里插入图片描述
在这里插入图片描述
因为一个ChannelHandler可以同时属于多个ChannelPipeline,因此它也是可以有多个ChannelHandlerContext,这种用法的ChannelHandler就可以使用@Sharable注解,因此在使用Sharable注解的时候要确定自己的ChannelHandler是线程安全的。

ctx默认类型为DefaultChannelHandlerContext,数据结构为双向链表,可以获取到的信息有很多,同时有很多方法,是Netty处理中最为常见的对象。

ctx.channel()    // 获取其对应的管道
ctx.pipeline()   // 获取启对应的pipeline

在进行Netty编程时,可以使用Map存储对应的ctx变量,进而获取到对应的通道直接发送数据

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值