在给缓存变量赋值的时候是多个线程来做的,很有可能启动过程中,有客户端频繁上下线,那么这个缓存表这个变量就要被反复的去通过cas赋值,那一定会出现ABA的问题。
    这个变量反复修改几次,重新修改到了最早的值,此值非彼值。使用AtomicStampedReference来解决,这个类就是又添加了一个stamp标记位,用于记录每一次这个被AtomicStampedReference对象被修改的动作次数,表示该对象被修改了多少次,每次cas的操作都是把当前的stamp和里面的stamp去比对一下,不一样就不能cas。

    1. 初始化该变量

    image.png
    image.png

    1. 具体使用

    1)获取对象应用和时间戳
    2)cas的时候要传当前对象的时间戳和操作后累加N的时间戳
    image.png