码上敲享录 > java高并发常见问题 > CAS操作的ABA问题是什么?

CAS操作的ABA问题是什么?

上一章章节目录下一章 2020-12-09已有1381人阅读 评论(0)

CAS操作的ABA问题是什么?


解决方法:

假如线程1获取当前被volatile修饰的变量X的值为A,然后想使用CAS操作修改X的值为B,但在执行CAS前,线程2使用CAS修改了变量X的值为B,然后又使用CAS修改了变量X的值为A。所以虽然线程1执行CAS时旧的X的值还是A,但是这个A已经不是线程1获取时的A了。这就是ABA问题。JDK中的AtomicStampedReference类给每个变量的状态值都配备了一个时间戳,从而避免了ABA问题的产生。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交