ChannelFuture
。Future-Listener
机制 , 用户可以方便地主动获取或者通过通知机制获得I/O操作结果 。func
,计算过程可能非常耗时 , 等待func
返回显然不合适 。那么在 调用func
的时候,立刻返回一个future,后续可以通过future去监控方法
func
的处理过程(即:Future-Listener机制)ChannelFuture
是一个接口:Public interface ChannelFuture extends Future
- 可以添加监听器,当监听的事件发生时,就会通知到监听器 。
channelFuture
来获取操作执行的状态,注册监听函数来执行完成后的操作 。常见的操作:
- 通过 isDone 方法来判断当前操作是否完成 。- 通过 isSuccess 方法来判断已完成的当前操作是否成功 。- 通过 getCause 方法来获取已完成的当前操作失败的原因 。- 通过 isCancelled 方法来判断已完成的当前操作是否被取消 。- 通过 addListener 方法来注册监听器,当操作已完成(isDone) , 将会通知指定的监听器 。小结:相比于传统阻塞I/O , 执行I/O操作后线程会被阻塞?。钡讲僮魍瓿?。异步处理的好处是不会造成线程阻塞,线程在I/O操作期间可以执行别的程序 , 在高并发情形下会 更稳定和更高的吞吐量 。
Netty 核心模块组件ServerBootstrap、BootstrapBootstrap意思是引导,一个Netty应用通常由一个Bootstrap开始,
主要作用是配置整个Netty程序,串联各个组件
,Netty中Bootstrap类是客户端程序的启动引导类,ServerBootstrap是服务器启动引导类 。常用方法:
- public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup):用于服务器端,用来设置两个EventLoop- public B group(EventLoopGroup group):该方法用于客户端,用来设置一个EventLoop- public B channel(Class<? extends C> channelClass):该方法用来设置一个服务器端的通道实现- public B option(ChannelOption option, T value):用来给ServerChannel添加配置- public ServerBootstrap childOption(ChannelOption childOption, T value):用来给接收的通道添加配置- public ServerBootstrap childHandler(ChannelHandler childHandler):业务处理类 , 自定义handler- public ChannelFuture bind(int inetPort):用于服务器端,用来设置占用的端口号- public ChannelFuture connect(String inetHost, int inetPort):用于客户端 , 用来连接服务器端Future、ChannelFutureNetty中所有的IO操作都是异步的,不能立刻得知消息是否被正确处理 。但是可以过一会等它执行完成或者直接注册一个监听,具体的实现就是通过Future和ChannelFuture , 他们可以
注册一个监听,当操作执行成功或失败时监听会自动触发注册的监听事件
。常用的方法:
- Channel channel():返回当前正在进行IO操作的通道- ChannelFuture sync():等待异步操作执行完毕Channel
Netty网络通信的组件 , 能够用于执行网络 I/O 操作
。通过 Channel 可获得当前网络连接的通道的状态 。通过 Channel 可获得 网络连接的配置参数 (例如接收缓冲区大?。?。Channel 提供异步的网络 I/O 操作(如建立连接,读写,绑定端口),异步调用意味着任何 I/O 调用都将立即返回,并且不保证在调用结束时所请求的 I/O 操作已完成
调用立即返回一个 ChannelFuture
实例 , 通过注册监听器到ChannelFuture
上,可以 I/O 操作成功、失败或取消时回调通知调用方 。不同协议、不同的阻塞类型的连接都有不同的 Channel 类型与之对应,常用的 Channel 类型:- NioSocketChannel,异步的客户端 TCP Socket 连接 。- NioServerSocketChannel,异步的服务器端 TCP Socket 连接 。- NioDatagramChannel,异步的 UDP 连接 。- NioSctpChannel,异步的客户端 Sctp 连接 。- NioSctpServerChannel,异步的 Sctp 服务器端连接,这些通道涵盖了 UDP 和 TCP 网络 IO 以及文件 IO 。
推荐阅读
- HDFS基础学习
- 【一】ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?
- 记录一次sshd服务启动失败
- 零基础如何学游戏编程(游戏编程学习入门)
- 机器学习实战-AdaBoost
- Pytorch模型量化
- 三 【单片机入门】应用层软件开发的单片机学习之路-----UART串口通讯和c#交互
- 二 【SSM】学习笔记——SpringMVC入门
- Briefings in Bioinformatics-2021 知识图谱-生物信息学-医学顶刊论文:生物信息学中的图表示学习:趋势、方法和应用
- 微信我的收藏怎么删除(公安局能调取已删微信记录吗)