<aside> 💡 CAS是一种无锁的非阻塞算法,全称为:Compare-and-swap(比较并交换),大致思路是:先比较目标对象现值是否和旧值一致,如果一致,则更新对象为新值;如果不一致,则表明对象已经被其他线程修改,直接返回。
</aside>
执行函数:CAS(V,E,N)

<aside> 💡 Unsafe类使Java拥有了像C语言的指针一样操作内存空间的能力,同时也带来了指针的问题。
</aside>
通过下面的方法,可以获取对象中某个属性的内存偏移地址,然后可根据偏移地址直接对属性进行修改,属性是否可读都无所谓,都能修改。
public native long objectFieldOffset(Field f);
使用unsafe类进行操作数据。
Field name = user.getClass().getDeclaredField(“name”);
long nameOffset = unsafe.objectFieldOffset(name);
unsafe.putObject(user, nameOffset, “jim”);