如何理解Netty的锁


如何理解Netty的锁,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。原子性:“并无一气呵成,岂能无懈可击”,如:高并发下的 i++可见性:“你做的改变,别人看不见”有序性:“不按套路出牌”竞争的态度:乐观锁(java.util.concurrent 包中的原子类) 与 悲观锁(synchronized)等待锁的人是否公平:公平锁 new ReentrantLock(true) 与 非公平锁 new ReentrantLock()是否可共享:共享锁 与 独享锁 – ReadWriteLock,其读锁是共享锁,其写锁是独享锁例:初始化 channel (io.netty.bootstrap.ServerBootstrap#init)Synchronized method -> Synchronized block例:统计待发送的字节数 (io.netty.channel.ChannelOutboundBuffer)AtomicLong -> Volatile long + AtomicLongFieldUpdaterAtomicLong vs long前者是一个对象,包含对象头(object header)以用来保存 hashcode、lock等信息,32 位系统占用 8 字节,64 位 香港云主机系统占用 16 字节,所以在 64 位系统下:volatile long = 8 bytesAtomicLong = 8 bytes (volatile long) + 16 bytes (object header) + 8 bytes (引用) = 32 bytes至少节约 24 字节!结论:
Atomic* objects -> Volatile primary type + static Atomic*FieldUpdater原子类型的对象可以用 volatile 修饰的基础类型来代替,以节省空间例1:记录内存分配字节数等功能用到的 LongCounter (io.netty.util.internal.PlatformDependent#newLongCounter())高并发时:java.util.concurrent.atomic.AtomicLong -> java.util.concurrent.atomic.LongAdder (JDK)结论:及时衡量,使用jdk最新功能例2:曾经根据不同情况,选择不同的并发包实现:JDK
例1:关闭和等待关闭事件执行器(Event Executor):Object.wait/notify -> CountDownLatchio.netty.util.concurrent.SingleThreadEventExecutor#threadLock例2:Nio Event Loop 中负责存储 task 的 QueueJdk’s LinkedBlockingQueue(MPMC) -> jctools’ MPSCMPMC: muti-producer & muti-consumer
MPSC: muti-producer & simple-consumerio.netty.util.internal.PlatformDependent.Mpsc#newMpscQueue(int)生活场景:饭店提供了很多包厢,服务模式:一个服务员固定服务某几个包厢模式;所有服务员服务所有的包厢模式;表面上看,前者效率没有后者高,但实际上它避免了服务员间的沟通(上下文切换)等开销,避免客人与服务员之间导出乱串,管理简单。局部串行:Channel 的 I/O 请求处理 Pipeline 是串行的整体并行:多个串行化线程(Nio Event Loop)Netty 应用场景下:局部串行 + 整体并行 > 一个队列 + 多个线程模式:降低用户开发难度、逻辑简单、提升处理性能避免锁带来的上下文切换和并发保护等额外开销看完上述内容,你们掌握如何理解Netty的锁的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: 在windows上玩游戏不能全屏如何解决

这篇“在windows上玩游戏不能全屏如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在windows上玩游戏不能全屏如何解决”文章吧。一…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/11 14:29
下一篇 08/11 14:29

相关推荐