首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
ConcurrentHashMap的原理是什么?
[问答题]
请你说明一下ConcurrentHashMap的原理?
添加笔记
求解答(0)
邀请回答
收藏(41)
分享
纠错
6个回答
添加回答
0
西瓜同学🏀
1. jdk1.7的ConcurrentHashMap想象成是16个线程安全的hashtable拼凑成的hashMap。每次新增一个Key的时候,我们会进行二阶段hash,第一阶段hash定位到这个key属于哪个分段,第二阶段hash把这个key定位到这个分段数组的什么下标,采取这种方式就是它的原理。学习concurrenthashmap我们主要是要观察他的如下几个方法:put,get,remove,resize,size。这边就不多言了,内容比较多,建议大家去看下源码吧,这边注意的一点是get是不加锁的,具体原因可以思考一下【用到了某个关键字】。2. jdk1.8的话抛弃了分段锁的概念,而是采取了cas和synchronized来保证并发安全,synchronized只锁住当前链表或者红黑二叉树的首节点,只要hash不冲突,就不会产生并发,效率很高。
发表于 2019-05-05 15:12:14
回复(0)
更多回答
3
Allen烽
回答这道题你得注意JDK1.7和1.8对于concurrentHashMap变化很大。
首先先说JDK1.7版本,1.7的思路是分段锁。啥意思呢?
对于共享资源,频繁地多线程会造成线程上下文地切换,怎么尽量避免这个问题了,这边就引入了锁的粒度这个概念,比如就以数组为例,我可以切分数组把一个大数组分成16段,如果多线程分别操作的是不同的段那么就不存在多线程竞争关系也相对线程安全,这就是分段锁。
你可以把1.7的ConcurrentHashMap想象成是16个线程安全的hashtable拼凑成的hashMap。每次新增一个Key的时候,我们会进行二阶段hash,第一阶段hash定位到这个key属于哪个分段,第二阶段hash把这个key定位到这个分段数组的什么下标,采取这种方式就是它的原理。学习concurrenthashmap我们主要是要观察他的如下几个方法:put,get,remove,resize,size。这边就不多言了,内容比较多,建议大家去看下源码吧,这边注意的一点是get是不加锁的,具体原因可以思考一下【用到了某个关键字】。
1.8的话抛弃了分段锁的概念
,而是采取了cas和synchronized来保证并发安全,
synchronized只锁住当前链表或者红黑二叉树的首节点,只要hash
不冲突,就不会产生并发,效率很高。
发表于 2019-04-04 10:44:11
回复(0)
1
酷酷boye
1. jdk1.7的ConcurrentHashMap想象成是16个线程安全的hashtable拼凑成的hashMap。每次新增一个Key的时候,我们会进行二阶段hash,第一阶段hash定位到这个key属于哪个分段,第二阶段hash把这个key定位到这个分段数组的什么下标,采取这种方式就是它的原理。学习concurrenthashmap我们主要是要观察他的如下几个方法:put,get,remove,resize,size。这边就不多言了,内容比较多,建议大家去看下源码吧,这边注意的一点是get是不加锁的,具体原因可以思考一下【用到了某个关键字】。2. jdk1.8的话抛弃了分段锁的概念,而是采取了cas和synchronized来保证并发安全,synchronized只锁住当前链表或者红黑二叉树的首节点,只要hash不冲突,就不会产生并发,效率很高。
发表于 2019-04-28 22:58:20
回复(0)
0
白夜之星
看到这些只浅尝辄止的答案不免有些失望...
发表于 2019-08-24 11:58:38
回复(2)
0
江畔8670
jdk1.7中采用Segment + HashEntry的方式进行实现 1.8中是采用Node + CAS + Synchronized来保证并发安全进行实现.
发表于 2019-04-29 18:15:07
回复(0)
0
gonghao
jdk1.7中采用Segment + HashEntry的方式进行实现 1.8中是采用Node + CAS + Synchronized来保证并发安全进行实现.
编辑于 2019-03-25 02:25:15
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Java
Java工程师
上传者:
小小
难度:
6条回答
41收藏
3804浏览
热门推荐
相关试题
3.下列关于表中西部省市区2006...
资料分析
言语理解与表达
资料分析
评论
(1)
4.该校1997年男女教师的比例为...
资料分析
言语理解与表达
资料分析
评论
(1)
计算机在工作过程中,若突然停电,(...
计算机常识
普及
C++
Pascal
选择题
评论
(1)
来自
NOIP2008初赛普及组
Mysql中表student_in...
数据库
SQL
评论
(1)
SQL中,下列涉及空值的操作不正确...
SQL
评论
(0)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题