ConcurrentHashMap 的Segment是不是越多并发性能越高
1个回答
展开全部
参考内容:
ConcurrentHashMap锁式稍微细粒度 ConcurrentHashMaphash表16桶(默认值)诸get,put,remove等用操作锁前需要用桶
试想原 能线程进入现却能同16写线程进入(写线程才需要锁定读线程几乎受限制提)并发性提升显易见
更令惊讶ConcurrentHashMap读取并发读取数候都没用锁定所读取操作几乎完全并发操作写操作锁定粒度非细比起前更加快速(点桶更表现更明显些)求size等操作才需要锁定整表
迭代ConcurrentHashMap使用同于传统集合快速失败迭代器另种迭代式我称弱致迭代器种迭代式iterator创建集合再发改变再抛 ConcurrentModificationException取代改变new新数据影响原数 据iterator完再指针替换新数据iterator线程使用原数据写线程并发完改变更重要保证线程并发执行连续性扩展性性能提升关键
面析ConcurrentHashMap源码主要析其Segment操作基本都Segment先看Segment内部数据定义
ConcurrentHashMap锁式稍微细粒度 ConcurrentHashMaphash表16桶(默认值)诸get,put,remove等用操作锁前需要用桶
试想原 能线程进入现却能同16写线程进入(写线程才需要锁定读线程几乎受限制提)并发性提升显易见
更令惊讶ConcurrentHashMap读取并发读取数候都没用锁定所读取操作几乎完全并发操作写操作锁定粒度非细比起前更加快速(点桶更表现更明显些)求size等操作才需要锁定整表
迭代ConcurrentHashMap使用同于传统集合快速失败迭代器另种迭代式我称弱致迭代器种迭代式iterator创建集合再发改变再抛 ConcurrentModificationException取代改变new新数据影响原数 据iterator完再指针替换新数据iterator线程使用原数据写线程并发完改变更重要保证线程并发执行连续性扩展性性能提升关键
面析ConcurrentHashMap源码主要析其Segment操作基本都Segment先看Segment内部数据定义
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询