ConcurrentHashMap

ConcurrentHashMap

ConcurrentHashMap继承自HashMap并实现了Map接口

HashMap是线程不安全的:在多线程环境下,如果两个线程同时插入相同的key的key-Value键值对,可能就会产生数据重复插入问题。

HashTable是线程安全版本,可以解决上述问题。但是由于HashTable是在方法上都加了Synchronized关键字,在线程插入的时候都要争抢锁,所以就会导致资源的浪费,性能低。

ConcurrentHashMap中引入的分段锁机制,unSafe原子类,同时引入cas操作,lock和unlock

1. 先根据key,算出对应的Segment数组下标,index
2. 获取index位置上的锁,Segment[index].lock();
3. segments[index].put[key.value],--entry--数组,链表
4. 释放index位置上的锁,Segment[index].unlock();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值