其他分享
首页 > 其他分享> > ConcurrentHashMap之9连问

ConcurrentHashMap之9连问

作者:互联网

1.聊聊ConcurrentHashMap 、源码,实现原理

2.ConcurrentHashMap并发能力为什么好于Hashtable

① Hashtable是通过对hash表整体进行锁定,使用synchronized来保证线程安全,是阻塞式的,当一个线程占有这个锁时,其他线程必须阻塞等待其释放锁

ConcurrentHashMap实现如下:
② jdk1.6的实现:ConcurrentHashMap是采用Segment分段锁的方式 其中 Segment 继承于 ReentrantLock,它并没有对整个数据结构进行锁定,而是局部锁定。如果容量大小是16,那个他的并发度就是16,相当于效率提高了16倍。
③ jdk1.8的实现:采用CAS + Synchronized,synchronized在put的时候锁是节点的第一个元素,但其底层还是“数组+链表+红黑树”的实现。当链表长度大于8并且数组长度大于64的时候转红黑树。

ps补充: CAS 获取数据时不加锁,通过volatile实现

2. sizeCtl 属性的含义

3.如何保证线程安全

4. hash 寻址算法

5.ConcurrentHashMap为什么不采用 AtomicLong 统计数量

6.LongAdder 如何解决了大并发下,性能问题?

分段锁的概念使用CAS锁数组的一个格

7.size()方法是怎么实现的?

8.longAdder 的内部结构

9.ConcurrentHashMap 进行 put 的步骤

标签:ConcurrentHashMap,连问,16,CAS,cell,字段,线程,数组
来源: https://blog.csdn.net/qq_38011415/article/details/120730722