CAS
这个指令全称 compare and swap 即比较替换指令,在现代处理器新加入的指令。
指导思想:基于乐观锁机制。比较一个变量在内存值中的值和变量的当前值(旧值)。如果相等,则认为该变量没有发生改变,使用新值替代旧值;否则认为替换失败。
Unsafe
在java程序的多线程环境中,如果一个变量被多个线程访问,要保证线程安全,除了 volatile、锁、final、static这些手段外,可以借助java提供的 sun.misc.Unsafe类
这个类两个特点:
平台相关的(java语言平台无关),c语言写的。对了java类提供了compareAndSwap方法
不在Java API中,我们只能使用java官方提供的一些类,比如原子类、Random等
既然我们没办法直接使用Unsafe,那我们来看JDK中是如何使用这个类的。