Java后端
·2025-04-0820250408 学习了智能协同云图库图库分析部分代码,复习ConcurrentHashMap
ConcurrentHashMap是一个常用的高并发容器类,基础容器HashMap在多线程环境下进行put操作时可能引起死循环,导致cpu飙升甚至达到100%,于是jdk提供了HashTable,HashTable虽然是线程安全的,他的实现原理与HashMap几乎一样,区别在于
①HashTable不允许key和value为null
②HashTable使用synchronized来保证线程安全,包含get/put在内的所有需要同步执行的方法,是对整个Hash表的锁定,当一个线程在调用put方法写入元素时,其他线程不能调用put添加元素也不能调用get获取元素,相当于所有操作是串行化,所以效率低下。
由此引出了ConcurrentHashMap
Jdk1.7版本的ConcurrentHashMap采用Long Addr一样的热点分散原理,内部使用Segment 数组分段锁,一个ConcurrentHashMap包含一个Segment数组,每个Segment包含一个HashEntry数组,每个元素是一个链式结构。
Segment继承ReentrantLock.默认16个Segment对象
Jdk1.8版本的ConcurrentHashMap采用数组+链表或者红黑树的方式,利用CAS+synchronized保证并发
2
0
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
