问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ConcurrentHashMap面试问题总结

发布网友 发布时间:2022-11-27 06:18

我来回答

1个回答

热心网友 时间:2023-10-14 18:50

Q:ConcurrentHashMap和HashMap的区别是什么?
A:
1.ConcurrentHashMap是线程安全的,HashMap是线程不安全的
2.ConcurrentHashMap不允许Key为null的值插入。而HashMap是可以的

Q:JDK8的ConcurrentHashMap和JDK7的ConcurrentHashMap有什么区别?
A:
1.JDK7的ConcurrentHashMap采用分段锁的策略,将整个数组分成多个segment,对这些segment进行分段加锁,使用的锁是ReentrantLock。而JDK8中的ConcurrentHashMap不采用分段锁的方式,直接使用Synchronized来进行。
2.JDK8中的ConcurrentHashMap新增了红黑树,并且插入用的是尾插法。
3.JDK7中的ConcurrentHashMap进行扩容时,是对当前的segment进行扩容,不会对其他segment有影响。而JDK8中就跟HashMap一样。整体扩容,但是保证线程安全

Q:JDK7中的ConcurrentHashMap是如何扩容的
A:JDK7中对每一段segment进行扩容,每一段segment的扩容跟HashMap保持一致

Q:JDK8中的ConcurrentHashMap是如何扩容的
A:在扩容时,首先会生成一个双倍大小的数组,生成完数组后,线程就会开始转移元素,在扩容的过程中,如果有其他线程在put,那么这个put线程会帮助去进行元素的转移,虽然叫转移,但是其实是基于原数组上的Node信息去生成一个新的Node的,也就是原数组上的Node不会消失,因为在扩容的过程中,如果有其他线程在get也是可以的。

Q:ConcurrentHashMap是如何保证线程安全的
A:
1.在JDK7的时候。ConcurrentHashMap是通过ReentrantLock+CAS+分段思想来保证的并发安全的,在JDK7的ConcurrentHashMap中,首先有一个Segment数组,存的是Segment对象,Segment相当于一个小HashMap,Segment内部有一个HashEntry的数组,也有扩容的阈值,同时Segment继承了ReentrantLock类,同时在Segment中还提供了put,get等方法,比如Segment的put方法在一开始就会去加锁,加到锁之后才会把key,value存到Segment中去,然后释放锁。同时在ConcurrentHashMap的put方法中,会通过CAS的方式把一个Segment对象存到Segment数组的某个位置中。同时因为一个Segment内部存在一个HashEntry数组,所以和HashMap对比来看,相当于分段了,每段里面是一个小的HashMap,每段公用一把锁,同时在ConcurrentHashMap的构造方法中是可以设置分段的数量的,叫做并发级别concurrencyLevel.
2.在JDK8的时候,ConcurrentHashMap是通过synchronized+cas来实现了。在JDK8中只有一个数组,就是Node数组,Node就是key,value,hashcode封装出来的对象,和HashMap中的Entry一样,在JDK8中通过对Node数组的某个index位置的元素进行同步,达到该index位置的并发安全。同时内部也利用了CAS对数组的某个位置进行并发安全的赋值。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
重本和一本一样吗 永劫无间是第几人称:小说叙事视角分析 名字未定(第三人称双男主 周霖 温宿) 我得了职业病〈轻度苯中毒〉,有职业病诊断证明书.工伤认定期间我没上... ...后来感觉麻烦,就直接去药店买药,他开了很多 这是十年前的功放,求高手看看那几个孔是什么? 车子断保险之后再交是一样的吗 车险断交后再续交 女性查激素六项什么时候检查 有一个素质很低下的室友是一种什么样的体验? 新鲜笋子煮麻辣鱼怎么做 笋子煮麻辣鱼的做法 泡发好的海参怎么保存 海参泡发后如何保存 信用卡(贷记卡)汽车分期抵押手续必须本人过去办吗? 22克万足银手镯值多少钱? 21克千足银手镯25元会是真的吗,还有证书 用21克银手镯以旧换新24克的,补老板197块钱,对吗?亏了多少? 21克千足银能卖多少钱 ps4备用代码怎么获取 珠海集体户口孩子落户新政策 珠海户口迁入手续流程是什么 长命锁金好还是银好 两种材质区别很大 公认最好去除新车异味的方法有哪些 鹤壁开发区,现在的房价多少 鹤壁新区房价趋势,求助网友一起分析。 东风日产逍客1,6l5mt2wd购置税是是多少 小米手机为何死机 海尔热水器打开回水管阀门就熄火 孔子兄弟姐妹几个? 请问那些人最适合吃褪黑素? 淘宝卖的i3 8100 散片600多天猫盒装800多 散片是二手拆机的吗?为啥那么便宜? 史上最简单的皮筋枪怎么做 镇海炼化员工背空气呼吸器多少秒合格? 中石化镇海炼化对空气呼吸器的佩戴是怎么要求的? 月饼刚好到保质期还可以吃吗 哪个有好的关于FLASH中3D设计的视频啊 哪里可以下载到关于平面设计方面的视频教程,比如色彩阿,创意阿什么的? DOTA2LGD青训队和LGD有啥区别 趣谈宝应之外的“宝应” Jinoo退役,从此剑仙只闻其名再不见其人。 拼多多的水光针能买吗 武义北站到唐风温泉怎么走 LGD青训队? 你觉得古天乐、张智霖、郑嘉颖主演的电影《反贪风暴5》怎么样? 巴林左旗山东黄金是国企吗 嘴角两边脱皮很痒发红怎么回事啊? 嘴巴周围干燥起皮发红怎么回事?嘴巴周围干燥起皮怎么办? - 信息提示 防脱发洗发水有哪些 防脱发洗发水推荐 我追赶第一名作文600 43岁属什么生肖婚配,79年属羊人的命运 我家人多,餐具多的都没地方放,打算定做个橱柜,想问下志邦橱柜咋样?