当前位置: 首页 > article >正文

Netty的常用组件及线程模型设计(二)

Channel、EventLoopGroup和ChannelFuture

Netty网络抽象的代表:

Channel–Socket
EventLoop–控制流、多线程处理、并发
ChannelFuture–异步通知
Channel和EventLoop关系如图:
我们可以看出Channel需要被注册到某个EventLoop上,在Channel整个声明周期内部都由这个EventLoop处理IO事件,也就是说一个Channel和一个EventLoop进行了绑定,但是一个EventLoop可以同时被多个Channel绑定。

在这里插入图片描述

Channel接口。

基本的IO操作(bind()、connect()、read()和write())依赖于底层网络传输所提供的原语。在基于Java的网络编程中,其基本的构造是类Socket.Netty的Channel接口所提供的API,被用于所有的IO操作。大大地降低了直接使用Socket类地复杂性。此外,Channel也是许多预定义、专门化实现地广泛类层次结构的根

由于Channel是独一无二的,所以为了保证顺序将Channel声明为java.lang.Comparable的一个子接口。因此,如果两个不同的Channel示例都返回了相同的散列码,那么AbstractChannel中的compareTo()方法的实现将会抛出一个Error

Channel的生命周期状态

ChannelUnregistered:Channel已经被创建,但是还未注册到EventLoop
ChannelRegistered:Channel已经被注册到了EventLoop
ChannelActiveLChannel处于活动状态(已经连接到它的远程节点)。它现在可以接收和发送数据了,ChannelInactive:Channel没有连接到远程节点
当这些状态发生改变时,将会生成对应的事件。这些事件将会被转发给ChannelPipeline中的,ChannelHandler,其可以随后对它们做出响应。在日常编程中,关注ChannelActive和ChannelInactive会更多一些

重要的Channel的方法。

eventLoop:返回分配给Channel的EventLoop
pipeline:返回Channel的ChannelPipeline,也就是说每个Channel都有自己的ChannelPipeline.
isActive:如果Channel是活动的,则返回true。活动的意义可能依赖于底层的传输。
例如,一个Socket传输一旦连接到了远程节点便是活动的,而一个Datagram传输一旦被打开便是活动的。
localAddress:返回本地的SocketAdress
remoteAddress:返回远程的SocketAddress
write:将数据写到远程节点,注意,这个写只是写往Netty内部的缓存,还没有真正写往Socket
flush:将之前写的数据冲刷到底层Socket进行传输
writeAndFlush:一个简便的方法,等同于调用write()并接着调用flush()


http://www.kler.cn/a/231853.html

相关文章:

  • 层归一化和批归一化
  • 问题分析与解决:Android开机卡动画问题分析
  • 【51单片机】LCD1602液晶显示屏
  • React中组件通信的几种方式
  • Educational Codeforces Round 164 (Rated for Div. 2)(A~E)
  • Zotero 7本地pdf文件名自适应中英文格式
  • Markdown:简洁高效的文本标记语言
  • springboot(ssm悦己美容院后台管理系统 美容院管理系统Java系统
  • 第1节、电路连接【51单片机+L298N步进电机系列】
  • 解决Windows程序与Mysql连接报错 [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次
  • 38. C++ 引用的本质
  • 批量检测微信小程序是否封禁接口源码
  • JVM 性能调优 - Java 虚拟机内存体系(1)
  • OpenCV识别视频中物体运动并截取保存
  • netstat: 未找到命令
  • C++面试宝典第27题:完全平方数之和
  • 常用排序算法(Java版本)
  • 【数据结构】堆(创建,调整,插入,删除,运用)
  • 巴尔加瓦算法图解:算法运用。
  • css1字体属性
  • 【数据结构】二叉树的顺序结构及链式结构
  • [VulnHub靶机渗透] dpwwn: 1
  • 解析spritf和sscanf与模拟常用字符串函数strchr,strtok(二)
  • mysql的慢sql优化
  • (41)速算机器人
  • 工作与生活平衡:在生活中寻找和谐