2019-01-06 #关于无锁化#

原子操作

原子操作在操作内存的时候不可以被打断
原子读:不会读一半被打断,写了其他值进去
原子写:不会因为进线程的调度问题,覆盖别的线程写的值

CAS

Compare and swap
读旧值,做更改,写的时候检查值是不是被改变了,如果值发生改变,则证明有其他并发任务对数据结构做了改变
ABA 问题
简而言之就是其他线程在本线程写之前把值改成B,再改回A,回造成当前线程的认知错误。
避免ABA问题:使用double word CAS

别迷信无锁化

无锁化性能未必好

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

推荐阅读更多精彩内容

  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,726评论 0 11
  • 本文首发于我的个人博客:尾尾部落 本文是我刷了几十篇一线互联网校招java后端开发岗位的面经后总结的多线程相关题目...
    繁著阅读 2,024评论 0 7
  • 妻子回老家拿东西时,父亲已经倒在地下,半身瘫痪,奄奄一息。 寂静的乡间小路上,救护车发出凄厉的呻吟声。 父亲身体一...
    fxp暗香浮动阅读 161评论 4 1
  • 2018年12月28日 多云 星期五 昨晚我正在洗澡,就听到客厅里猪媽发出又是好笑又是生气的声音,...
    蓝色逍遥398阅读 308评论 2 9
  • ¥0YSFb92Oyl8¥ 如果有人问你:“只能选一种食物,你最爱吃什么?”我感觉这个问题从小到大一直围绕着我,小...
    42dad7612985阅读 136评论 0 0