CAS CAS原理ABA问题 CAS原理 比较并交换 原理:unsafe.getAndAddInt;底层汇编,根据变量地址获取变量值比较并交换。 CAS缺点:循环时间长开销很大;只能保证一个共享变量的原子操作;ABA问题。 ABA问题 CAS底层使用unsafe类,当前线程根据内存地址获取值,比较值相同后交换。但如果另一个线程也操作了这个变量并且修改回原来的值,当前线程并不知道,值还是相等,修改值。这样是不合理的。 解决方案:给变量加上一个版本,控制起来,每次修改版本加一,同时比较值和版本。