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

Netty 组件介绍 - ChannelFuture

异步处理

Netty中所有的IO操作都是异步的,操作可能不会马上返回结果。所以需要在之后的某个时间点确定他结果的方法。

  • 使用sync方法同步结果
  • 使用addListener(回调对象)方法异步处理结果
public class IoEventLoopClient {private static final Logger logger = LoggerFactory.getLogger(EventLoop.class);public static void main(String[] args) throws InterruptedException {ChannelFuture future = new Bootstrap().group(new NioEventLoopGroup()).channel(NioSocketChannel.class).handler(new ChannelInitializer<NioSocketChannel>() {@Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {ch.pipeline().addLast(new StringEncoder());}}).connect(new InetSocketAddress("127.0.0.1", 8080));//1、使用sync方法同步结果ChannelFuture channelFuture = future.sync();Channel channel = channelFuture.channel();System.out.println(channel);//2、使用addListener(回调对象)方法异步处理结果channelFuture.addListener(new ChannelFutureListener() {@Overridepublic void operationComplete(ChannelFuture channelFuture) throws Exception {Channel channel = channelFuture.channel();System.out.println(channel);}});}
}

关闭处理

public class CloseClient {private static final Logger logger = LoggerFactory.getLogger(EventLoop.class);public static void main(String[] args) throws InterruptedException {NioEventLoopGroup group = new NioEventLoopGroup();ChannelFuture future = new Bootstrap().group(group).channel(NioSocketChannel.class).handler(new ChannelInitializer<NioSocketChannel>() {@Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {ch.pipeline().addLast(new StringEncoder());}}).connect(new InetSocketAddress("127.0.0.1", 8080));Channel channel = future.sync().channel();ChannelFuture closeFuture = channel.closeFuture();//1、使用sync方法同步处理关闭closeFuture.sync();logger.info("处理关闭");//2、使用addListener(回调对象)方法异步处理结果closeFuture.addListener(new ChannelFutureListener() {@Overridepublic void operationComplete(ChannelFuture channelFuture) throws Exception {logger.info("处理关闭");group.shutdownGracefully();//优雅停止}});}
}


http://www.mrgr.cn/news/64739.html

相关文章:

  • 英特尔股价分析,财报超出预期,英特尔股票该买入还是卖出?
  • Matlab实现鲸鱼优化算法优化随机森林算法模型 (WOA-RF)(附源码)
  • 23.智能停车计费系统(基于springboot和vue的Java项目)
  • Go 函数的使用
  • 练习LabVIEW第三十七题
  • Python小白学习教程从入门到入坑------第二十四课 继承(语法进阶)
  • ASRPRO 记事本2
  • SICTF Round #4|MISC
  • YOLOv6-4.0部分代码阅读笔记-figure_iou.py
  • diss git使用
  • 德州仪器股票分析:增长已经放缓的德州仪器,该买入还是卖出?
  • SpringBoot自动装配流程
  • 存储和读写方案
  • 讲讲RabbitMQ 性能优化
  • 清华双臂机器人扩散大模型RDT:先预训练后微调,支持语言、图像、动作多种输入
  • 动态规划-两个数组的dp问题——1143.最长公共子序列
  • Java 中的 堆栈(Stack)
  • 海滨学院班级记忆档案:设计与技术实现
  • 单例模式四种写法
  • C#/.NET/.NET Core学习路线集合,学习不迷路!
  • 使用贪心策略求解糖果罐调整次数
  • Foods
  • 三层交换实现不同VLAN之间设备的互通
  • js中多let与var
  • 【016C】基于51单片机电子秤(LCD1602显示)
  • SpringBoot框架下:构建专业在线试题库