首页系统concurrenthashmap 原理(handlermapping原理)

concurrenthashmap 原理(handlermapping原理)

编程之家2024-05-15100次浏览

一、concurrenthashmap线程安全的原理

在ConcurrentHashMap没有出现以前,jdk使用hashtable来实现线程安全,但是hashtable是将整个hash表锁住,所以效率很低下。

concurrenthashmap 原理(handlermapping原理)

ConcurrentHashMap将数据分别放到多个Segment中,默认16个,每一个Segment中又包含了多个HashEntry列表数组,

对于一个key,需要经过三次hash操作,才能最终定位这个元素的位置,这三次hash分别为:

对于一个key,先进行一次hash操作,得到hash值h1,也即h1=hash1(key);

将得到的h1的高几位进行第二次hash,得到hash值h2,也即h2=hash2(h1高几位),通过h2能够确定

二、currhashmap的实现原理

?ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁(ReentrantLock),在ConcurrentHashMap里扮演锁的角色;HashEntry则用于存储键值对数据。一个ConcurrentHashMap里包含一个Segment数组。Segment的结构和HashMap类似,是一种数组和链表结构。一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素,每个Segment守护着一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得与它对应的Segment锁。

三、hashmap和concurrenthashmap的区别,hashmap的底层源码

你好。

concurrenthashmap 原理(handlermapping原理)
有并发访问的时候用ConcurrentHashMap,效率比用锁的HashMap好功能上可以,但是毕竟ConcurrentHashMap这种数据结构要复杂些,如果能保证只在单一线程下读写,不会发生并发的读写,那么就可以试用HashMap。ConcurrentHashMap读不加锁,写...

concurrenthashmap 原理(handlermapping原理)
swift编程语言,swift语言是什么黄牛怎么抢票的(怎么找黄牛买票)