- 博客(4)
- 收藏
- 关注
原创 ConcurrentHashMap在JDK1.7和1.8中的不同实现
1.7实现数据结构jdk1.7中采用Segment + HashEntry的方式进行实现ConcurrentHashMap初始化时,计算出Segment数组的大小ssize和每个Segment中HashEntry数组的大小cap,并初始化Segment数组的第一个元素;其中ssize大小为2的幂次方,默认为16,cap大小也是2的幂次方,最小值为2,最终结果根据根据初始化容量initi...
2018-08-08 23:00:43
194
原创 ConcurrentHashMap底层机构和原理
HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占。ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的Hashtable,...
2018-08-08 13:01:56
1209
原创 JDK1.8后的HashMap底层结构变化
JDK1.8以后 HashMap的数据结构发生了一些改变,从单纯的数组加链表结构变成数组+链表+红黑树.其中Node是HashMap的一个内部类,实现Map.Entry接口,本质是一个KV映射,上图中每个元素都是一个Node对象.HashMap顾名思义是通过Hash表进行存储.为了解决哈希碰撞的问题,Java采用这种数组 + 链表方式来进行存储.具体的put方法源码如下....
2018-08-01 22:59:58
5633
1
转载 hashmap底层结构及分析
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap<String,Object> m=new HashMap<String,Object>(); m.put("a...
2018-08-01 22:35:32
235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人