
验证Netty客户端线程
发布日期:2021-05-18 06:39:16
浏览次数:15
分类:精选文章
本文共 1630 字,大约阅读时间需要 5 分钟。
我们验证了Netty服务端线程,现在我们来验证客户端线程。这需要与之前服务端的代码配合测试。
以下是客户端的代码示例:
EventLoopGroup group = new NioEventLoopGroup();Bootstrap bootstrap = new Bootstrap();bootstrap.group(group) .channel(NioSocketChannel.class) .option(ChannelOption.SO_KEEPALIVE, true) .option(ChannelOption.TCP_NODELAY, true) .handler(new ChannelInitializer() { @Override protected void initChannel(NioSocketChannel ch) { ChannelPipeline channelPipeline = ch.pipeline(); channelPipeline.addLast(new StringDecoder()); channelPipeline.addLast(new StringEncoder()); channelPipeline.addLast(new ClientInHandler()); } });bootstrap.connect(new InetSocketAddress("127.0.0.1", 8080));
以下是客户端输入Handler的代码:
@Slf4jpublic class ClientInHandler extends SimpleChannelInboundHandler{ @Override protected void channelRead0(ChannelHandlerContext ctx, String msg) { log.info("ClientInHandler-channelRead0: {}" + Thread.currentThread().getName()); System.out.println("客户端接收到服务端数据: " + msg); }}
为了接收服务端的数据,我们在ChannelHandlerContext的channelRead
方法中添加打印代码:
@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { System.out.println("HeadContext-channelRead: " + Thread.currentThread().getName()); ctx.fireChannelRead(msg);}
通过以上代码,我们可以看到两个Handler使用不同的线程。此外,默认情况下Netty使用统一的线程池来执行这些Handler。如果需要特定线程执行Handler,可以在初始化时指定。
在第一次测试中,两个Handler使用了同一个线程。稍微修改后,服务启动后输出显示两个Handler使用了不同的线程。这种方式确保了代码的扩展性和灵活性。
总之,当用户手动指定Handler执行的线程时,Handler会在指定的线程中运行,否则默认使用Netty提供的线程池。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月27日 23时00分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VxWorks 操作系统学习笔记
2019-03-16
链表插入和删除算法
2019-03-16
断言(assert)的用法
2019-03-16
主机与虚拟机(ubuntu)可以互ping,虚拟机不能上网解决办法
2019-03-16
驱动程序之_1_字符设备_13_USB设备_1_基本概念
2019-03-16
wxPython下载安装教程
2019-03-16
HERest源码解析
2019-03-16
java 原型模式(大话设计模式)
2019-03-16
微机原理 6-计算机中常用的数制
2019-03-16
web访问ejb测试 详解
2019-03-16
window系统下安装使用curl命令工具
2019-03-16
假如计算机是中国人发明的,那代码应该这么写
2019-03-16
神器 Codelf !
2019-03-16
趣图:会算法和不会算法的区别
2019-03-16
区块链会2020再次爆发,先学点DAPP压压惊,跟我一起学《区块链DApp入门实战》
2019-03-16
问题解决28:微信网页授权出现redicet_uri 参数错误
2019-03-16
LeakCanary 中文使用说明
2019-03-16
反转链表,(5)
2019-03-16
Camera (api1)的打开过程
2019-03-16
wxwidgets绘图
2019-03-16