美文网首页
LongAdder Cmap

LongAdder Cmap

作者: 辰晞 | 来源:发表于2019-05-22 09:37 被阅读0次

    LongAdder
    https://www.bookstack.cn/read/Java_Basic_Introduction/README.md vip了,基础都在这里。
    https://zhuanlan.zhihu.com/p/65520633 场景就是写多
    https://blog.xiaoxiaomo.com/2019/03/15/Java-ConcurrentHashMap%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86/ 看到简单 不好明了的。

    图片搜索
    http://www.jasongj.com/java/concurrenthashmap/
    https://www.iteye.com/topic/1103980
    https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/index.html ibm出品 必探究到本质
    都强调一个动态变化。
    有两个方法,一个是分段,一个是cow。
    unsafe是什么,就好比是malloc,free C++中的,完成一些非法操作使用
    直接操作内存的。 还有就是堆外和cas这两点。
    https://zhuanlan.zhihu.com/tt-yuan 这个专栏不错。还有一个假的共享。
    NM,读zhss的都感觉很简单,看code都感觉这么吃力呢?
    思路和落实有很大差距呀。
    https://sulangsss.github.io/2019/02/01/Java/Advance/AtomicLong%E5%92%8CLongAddr/ 把握关键点 这里就足够了
    不需要到code级别,还是原理的东西。
    场景都是计数器好像,一直累加base,不行都设置分段,都累加去吧,最后 合并base+各个分段。
    https://sulangsss.github.io/2019/02/01/Java/Advance/AtomicLong%E5%92%8CLongAddr/ 这里即可 VIP 原理 不要看code。
    几个QA 瞬时MB呀
    初始情况,LongAdder与AtomicLong是相同的,
    只有在CAS失败时,才会将value拆分成cell,
    每失败一次,都会增加cell的数量,这样在低并发时,同样高效,
    在高并发时,这种“自适应”的处理方式,达到一定cell数量后,CAS将不会失败,效率大大提高。
    NM,小小的思想 一草一木皆是世界呀。
    http://www.importnew.com/21358.html 参考这里的简单描述

    https://zhuanlan.zhihu.com/p/38288416 继续参考
    然后依次进行2的幂等次的扩充,直到小于等于最接近 CPU核数的2的幂等(四核时为16)
    维护了一个自旋锁(通过UnSafe的CAS),用于操作base和Cell时的并发控制

    何时初始化cell数组? 失败的时候。
    当前线程如何选择cell中的元素进行访问? 随机算法
    如果保证cell中元素更新的线程安全? 使用unsafe的cas
    cell数组何时进行扩容,cell元素个数可以无限扩张? 接近 2的cpu核数次方即可。

    算是完结了一个系统。

    终结了
    https://www.jianshu.com/p/487d00afe6ca
    https://juejin.im/post/5b00160151882565bd2582e0
    https://www.cnblogs.com/lfs2640666960/p/9621461.html
    https://www.cnblogs.com/yangming1996/p/8031199.html
    并发扩容策略
    https://www.wandouip.com/t5i204093/
    大图

    这个很重要,因为这个是一把钥匙 串联所有技能的一个点子。
    NM,看都看不懂,这里比较难呀。
    http://www.importnew.com/28263.html 系统性 说原理即可哈
    这感觉,con current hash map 是1616呀 并发级别16
    很系统了,自己看不懂这个没有办法。

    入门级别
    https://blog.csdn.net/universsky2015/article/details/77965825
    读锁完全去除,哪怕在增删改的时候,为什么还不加锁,保证一致性的。
    NM,这里想不通的,他的修改的时候,怎么就保证了get的数据一致性?
    其实是保证不了的。 这里说的简单一些。

    这个必须一句话来明了,的确是一个差异化的地方。
    https://www.jianshu.com/p/f6730d5784ad 占小狼 足矣
    https://crossoverjie.top/2018/07/23/java-senior/ConcurrentHashMap/ 足够了
    https://blog.csdn.net/qq_27007251/article/details/71403647 没有死循环了,上一篇说的不对
    还有丢失数据的问题,也是一个差一点 也要BB。
    明确说了,没有,就是顺序改变了。
    自旋获取,到一定的次数 阻塞获取 升级
    :其中抛弃了原有的 Segment 分段锁,而采用了 CAS + synchronized 来保证并发安全性。
    其实是,segment可以用数组的首节点替代了。是这样的。
    自旋锁到互斥锁的升级 代码写的666
    http://www.jasongj.com/java/concurrenthashmap/ ms足够的一篇了。 VIP 终结了。

    相关文章

      网友评论

          本文标题:LongAdder Cmap

          本文链接:https://www.haomeiwen.com/subject/yfxyzqtx.html