ConcurrentHashMap如何实现高并发性的

1)利用锁的分段,默认16个锁共同维护整个ConcurrentHashMap,使一个写线程不会持有整个ConcurrentHashMap的锁,降低了持有锁的频率,大大的提高了并发性。

2)volatile变量的使用,根据先行发生原则:对于同一个volatile变量,一个写操作会先行发生后面的读操作,例如每一次写操作完成后都会对volatile变量的count进行改写,每次读操作都会先行访问这个count,从而使每次读操作不用加锁的情况下能够得到正确的结果,实现了可见性,使得大多数读都可以在不需要加锁的情况下得到正确的值,因为ConcurrentHashMap的key和value不能为空,所以只有在读到为空的时候说明发生了错误,这个时候才需要加锁读取。

3)内部对象HashEntry的不变属性next,每次插入只能在头节点前面插入,在删除一个节点,只是创建了新的部分链表,如果同时有读线程在遍历链表,可以不用加锁且保证正确性,因为原表仍然存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值