
netty 3.6和netty 4的区别多大
2个回答
展开全部
Netty3只保证 upstream事件在IO线程里执行,但是所有的downstream事件会被调用线程处理,它可能是IO线程,也可能是用户自定义线程,这就带来了一个问题,用户需要小心地处理同步操作。除此之外,还会面临线程上下文切换的风险,设想一下,你在write的时候遇到了异常,转而触发exceptionCaught,但这是一个upstream事件,怎么办?
Netty4的线程模型则不存在此类问题,因为所有的操作都被保证在同一个EventLoop里的同一个Thread完成。也就是说Netty4不存在并发访问 ChannelHandler,当然这个前提是你没有给该handler打上Sharable注解。同时它也能保证 happens-before关系,所以你也没必要在 ChannelHandler声明volatile field。
用户可以指定自己的 EventExecutor来执行特定的 handler。通常情况下,这种EventExecutor是单线程的,当然,如果你指定了多线程的 EventExecutor或者 EventLoop,线程sticky特性会保证,除非出现 deregistration,否则其中的一个线程将一直占用。如果两个handler分别注册了不同的EventExecutor,这时就要注意线程安全问题了。
Netty4的线程模型则不存在此类问题,因为所有的操作都被保证在同一个EventLoop里的同一个Thread完成。也就是说Netty4不存在并发访问 ChannelHandler,当然这个前提是你没有给该handler打上Sharable注解。同时它也能保证 happens-before关系,所以你也没必要在 ChannelHandler声明volatile field。
用户可以指定自己的 EventExecutor来执行特定的 handler。通常情况下,这种EventExecutor是单线程的,当然,如果你指定了多线程的 EventExecutor或者 EventLoop,线程sticky特性会保证,除非出现 deregistration,否则其中的一个线程将一直占用。如果两个handler分别注册了不同的EventExecutor,这时就要注意线程安全问题了。

2024-10-17 广告
ZigBee,也称紫蜂,是一种低速短距离传输的无线网上协议,底层是采用IEEE 802.15.4标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。想了解更多相关信息...
点击进入详情页
本回答由晓网科技提供
展开全部
Netty和mian比较报告
数据测试报告
简述:1、启动服务器,等到客户端接入
2、客户端发送链接请求。当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb.
3、当服务端接收到链接,第一次接收到数据后,记录当前时间
4、服务端将接收到的数据再返回给客户端。当服务端接收数据超过50m,则停止接收,并记录当前时间
5、当客户端接收数据量超过50m,记录当前时间。终止链接。
6、服务端和客户端得到执行时间。
数据测试报告
简述:1、启动服务器,等到客户端接入
2、客户端发送链接请求。当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb.
3、当服务端接收到链接,第一次接收到数据后,记录当前时间
4、服务端将接收到的数据再返回给客户端。当服务端接收数据超过50m,则停止接收,并记录当前时间
5、当客户端接收数据量超过50m,记录当前时间。终止链接。
6、服务端和客户端得到执行时间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询