美文网首页
Java中的CAS

Java中的CAS

作者: lc_666 | 来源:发表于2020-04-04 22:23 被阅读0次

    CAS

    • Compare And Swap;
    • CAS中使用了三个基本操作数:内存位置(V)、预期原值(A)和新值(B);
    • 更新变量时,只有当V中的值与A相同才会修改为B
    • CAS是通过无限循环来获取数据,如果获取数据同预期不同,则需要自旋(循环判断条件是否满足);

    CAS的缺点

    • CPU开销大;
    • 不能保证代码块的原子性,只能保证一个变量的原子性;
    • 会发生ABA问题,即预期的值A在线程阻塞时,发生了A->B->A的过程;
      • 解决的方案是增加一个版本号;

    相关文章

      网友评论

          本文标题:Java中的CAS

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