博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ConcurrentHashMap学习
阅读量:7194 次
发布时间:2019-06-29

本文共 654 字,大约阅读时间需要 2 分钟。

hot3.png

concurrentHashMap是一个并发的map类,利用cas,Unsafe技术提供更细腻的并发控制,得到更好的并发效果

1.8之前特性

特点:

  • 锁分段;concurrentcyLevel默认值是16;通过锁定segment来实现同步;相比hashtable,进步很大.但初始化很慢;
  • entry的value值加volatile,保证可见性
  • putVal()方法重复扫描,检测冲突,获取再入锁; 锁的是segment,粒度还是有点大.
  • size统计,根据Segment.modcount值进行重试,不成功则锁定;综合统计;实际上不是很好
  • get()方法利用了Unsafe.getOjbectVolatile(Object[],long n)方法
  • resize() 针对segment进行扩容

1.8

特性:

  • 去掉segment,直接对Entry加锁;实际上新增的锁是加在链表头或树头上的
  • putVal时,使用synchronize锁定entry值,更新时采用Unsafe的CAS技术更新
  • Entry的value和之前没变化
  • size统计,合并统计, CounterCells,采用CounterCell类,使用LongAdder技术
  • 初始化,双检锁+cas技术进行控制;
  • 取值是,利用(Node)U.getObjectAcquire(Object[],long n)技术
  • resize() 同样有树化操作

转载于:https://my.oschina.net/u/1590027/blog/3046649

你可能感兴趣的文章
大厂前端面试考什么?
查看>>
重构 Composer 源管理工具 CRM 为 composer 插件
查看>>
Linux中的阻塞机制及等待队列
查看>>
我对JS字典的简单学习
查看>>
[译]HTML attribute与DOM property之间的区别?
查看>>
如何用Uber JVM Profiler等可视化工具监控Spark应用程序?
查看>>
Unix高级环境编程
查看>>
揭秘天猫未来小店背后的NEC the WISE技术群
查看>>
CentOS 6.5上安装并配置FastDFS
查看>>
流程DEMO-借款申请
查看>>
算法——分支限界法
查看>>
Git版本恢复命令reset(转载)
查看>>
运维第八单元
查看>>
实战 MDT 2012(二)---制作模板机
查看>>
Memcached (二)YUM安装和编译安装
查看>>
Citrix 3D虚拟化解决方案之小结
查看>>
setTimeout与setInterval区别
查看>>
安装配置rabbitmq
查看>>
linux服务器运维 -- 路线、架构
查看>>
Sqoop数据分析引擎安装与使用
查看>>