阅读concurrentHashmap的counter有感

JDK1.7 和 JDK1.8 对 size 的计算是不一样的。 1.7 中是先不加锁计算三次,如果三次结果不一样再加锁(锁住该段的修改行为)。

JDK1.8 size 是通过对 baseCount 和 counterCell 进行 CAS 计算,最终通过 baseCount 和 遍历 CounterCell 数组得出 size。baseCount对每一个segment的修改操作做计数,并CAS到countercell中,一旦失败归入countercell,如果失败不断重试,统计就是base

JDK 8 推荐使用mappingCount 方法,因为这个方法的返回值是 long 类型,不会因为 size 方法是 int 类型限制最大值。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 13,879评论 4 56
  • 简书 占小狼转载请注明原创出处,谢谢! 知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。 Concu...
    美团Java阅读 58,413评论 28 198
  • 一听免费立马蜂拥而上的结果是浪费了你好多的时间而不自知。 你的时间永远比钱更值钱。 现在的我越来越不相信免费的东西...
    王丽燕199阅读 3,418评论 1 11
  • 到家第二天,小姐姐要去练瑜伽,她把我放在宠物店洗澡剪指甲,感觉浑身上下好清爽... 不过我还是没能控制住随地大小便...
    臭棒是我也阅读 1,384评论 0 0
  • 在未知的领域中、在超自然的纬度中变得勇敢,克服心里的软弱,全然热情奔放,全然信任,如一个初生婴儿,她的世界观永远是...
    莲花星系阅读 2,463评论 1 0