Unsafe 是一些不被虚拟机控制的内存操作的合集。在JUC包中使用的比较多。
这个类提供了一些API,可以用于直接操作硬件资源。使用Unsafe也有一定的风险,因为他操作的内存是不受JVM管控的,不利于资源回收。在实现层面,会由JIT (即时编译器)实现,替换成具体的CPU指令。
CAS 是一种原子的写操作(比较并保存)。由操作系统提供功能实现。
Unsafe提供了一些cas的API,比如
putObject(Object var1, long var2, Object var4);compareAndSwapObject(Object var1, long var2, Object var4, Object var5);