关于CAS中的ABA问题存在的隐患
一开始觉得ABA问题确实是个问题,但是具体场景是什么呢,虽然过程改了,但是结果一样,取的值也一样
不明所以,不过呢,这里也有一个小的demo可以说明一下
该例子通过AtomicReference判断对象User是否发生了改变,单从对象来说,没有变吧,结果输出也是
不会吧不会吧,你和我说,天黑了,看不清人,但是一摸就知道是人啊,在家里除了你武大郎还能是谁呢
我想想也是,我武大郎是人,西门庆不也是人啊,所以武大郎=西门庆,我潘金莲做的事怎么会是错的呢,
所以是true吧
那到底是不是true呢?
由此呢看出来CAS比较的是对象是否发生了变化,你这个人是不是变成了动物,并没有在意内容的变化
CAS可能会导致某些集合类的操作并不是原子性的,因为你并不能保证在CAS的过程中,有没有其他的节点发送变化。
链表的解释就百度一下吧,道理相通
当然要是你发生了这种事情能想通,那就没法了
有句话怎么说,你出去打拼多年回来了,她却说你变了
你还是那个你