使用AtomisReference进行原子引用,主线程仅能判断出共享变量的值与最初值A相同,不能感知由A变成B再变成A这种情况,就是说如果其他线程动过了共享变量,cas还是会判断成功,如下:
为了解决这种情况,我们可以使用AtomicStampedReference增加一个版本号判断,以及使用AtomicMarkableReference使用布尔值判断,只要共享变量改过cas就判断为false
使用AtomisReference进行原子引用,主线程仅能判断出共享变量的值与最初值A相同,不能感知由A变成B再变成A这种情况,就是说如果其他线程动过了共享变量,cas还是会判断成功,如下:
为了解决这种情况,我们可以使用AtomicStampedReference增加一个版本号判断,以及使用AtomicMarkableReference使用布尔值判断,只要共享变量改过cas就判断为false