java netty连接硬件,
java基础教程栏目介绍如何和Netty学习Java锁
如何解决写爬虫IP受阻的问题?立即使用。
推荐(免费):java基础教程
1 锁的对象和范围
将粒度减小2 锁的对象本身大小
减少空间占用
原子长vs . S长
前者是一个对象,包含对象头来保存hashcode和lock等信息。在64位系统中,取16字节,在64位系统中,volatile long=8字节(volatile long) 16字节(object header) 8字节(reference)=32字节。
至少保存24个字节!因此,atomic * objects=volatile主要类型静态atomic * field updater
3 锁的速度
提高并发性
LongCounter
记录在内存和其他函数中分配的字节数。
高并发下:Java . util . concurrent . atomic . atomic long=Java . util . concurrent . atomic . long adder
结论:及时测量和使用JDK的最新功能。
根据不同情况,选择不同的并发包实现
JDK 1.8考虑ConcurrentHashMap V8(JDK 8中concurrent hashmap的版本)
4 不同场景选择不同的并发类
根据需要改变
关闭并等待关闭事件执行器:
Object.wait/通知=》 CountDownLatch
Nio事件循环中负责存储任务的队列
Jdk的LinkedBlockingQueue(MPMC)-jctools的MPSC
io . netty . util . internal . platform dependent . mpsc # newMpscQueue(int):
5 锁的价值
能不用就不用。
Netty应用场景:局部串行和整体并行——一个队列模式下的多线程;
降低用户开发难度,简化逻辑,提高处理性能。
避免额外的开销,例如由锁引起的上下文切换和并发保护。
避免使用锁:使用ThreadLocal避免资源争用,比如Netty的轻量级线程池实现。以上是跟Netty学习Java锁的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。