美文网首页
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