ConcurrentHashMap

HashMap?ConcurrentHashMap?相信看完这篇没人能难住你!  https://blog.csdn.net/weixin_44460333/article/details/86770169

 

从类图中可以看出来在存储结构中ConcurrentHashMap比HashMap多出了一个类Segment,而Segment是一个可重入锁。

ConcurrentHashMap是使用了锁分段技术来保证线程安全的。

锁分段技术:首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。 

ConcurrentHashMap提供了与Hashtable和SynchronizedMap不同的锁机制。Hashtable中采用的锁机制是一次锁住整个hash表,从而在同一时刻只能由一个线程对其进行操作;而ConcurrentHashMap中则是一次锁住一个桶。

ConcurrentHashMap默认将hash表分为16个桶,诸如get、put、remove等常用操作只锁住当前需要用到的桶。这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。

 

ConcurrentHashMap是如何让多线程同时参与扩容          https://blog.csdn.net/xpsallwell/article/details/88071038

 

 

 

 

 

 

posted @ 2021-02-23 16:37  abcdefghijklmnop  阅读(68)  评论(0编辑  收藏  举报