cas优点:如一描述在并发量不是很高时cas机制会提高效率。
cas缺点:
1、cpu开销大,在高并发下,许多线程,更新一变量,多次更新不成功,循环反复,给cpu带来大量压力。
2、只是一个变量的原子性操作,不能保证代码块的原子性。
3、ABA问题

ABA问题:内存值V=100;
threadA 将100,改为50;
threadB 将100,改为50;
threadC 将50,改为100;

场景:小牛取款,由于机器不太好使,多点了几次全款操作。后台threadA和threadB工作,
此时threadA操作成功(100->50),threadB阻塞。正好牛妈打款50元给小牛(50->100),
threadC执行成功,之后threadB运行了,又改为(100->50)。
牛气冲天,lz钱哪去了???

如何解决aba问题:
对内存中的值加个版本号,在比较的时候除了比较值还的比较版本号。

java:AtomicStampedReference就是用版本号实现cas机制。

相关文章:

  • 2022-12-23
  • 2022-01-20
  • 2021-12-01
  • 2021-04-21
  • 2021-11-20
  • 2021-11-17
  • 2021-11-17
  • 2021-11-17
猜你喜欢
  • 2021-05-29
  • 2021-05-18
  • 2022-12-23
  • 2021-10-01
  • 2022-02-05
  • 2022-12-23
相关资源
相似解决方案