1、普通读写
通过Unsafe可以读写一个类的属性,即使这个属性是私有的,也可以对这个属性进行读写。
public native int getInt(Object var1, long var2);
public native void putInt(Object var1, long var2, int var4);
2、volatile读写
保证有序性和可见性
public native int getIntVolatile(Object var1, long var2);
public native void putIntVolatile(Object var1, long var2, int var4);
3、有序写
只保证有序性写入,不保证可见性
public native void putOrderedObject(Object var1, long var2, Object var4);
public native void putOrderedInt(Object var1, long var2, int var4);
public native void putOrderedLong(Object var1, long var2, long var4);
4、直接内存操作
直接操作内存的能力
public native long allocateMemory(long var1);
public native long reallocateMemory(long var1, long var3);
public native void setMemory(long var1, long var3, byte var5);
public native void copyMemory(Object var1, long var2, Object var4, long var5, long var7);
public native void freeMemory(long var1);
5、cas操作
public final native boolean compareAndSwapObject(Object var1, long var2, Object var4, Object var5);
public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);
public final native boolean compareAndSwapLong(Object var1, long var2, long var4, long var6);
6、内存相关
public native long staticFieldOffset(Field var1);
public native long objectFieldOffset(Field var1);
public native Object staticFieldBase(Field var1);
public native int arrayBaseOffset(Class<?> var1);
public native int arrayIndexScale(Class<?> var1);
7、线程调度
public native void unpark(Object var1);
public native void park(boolean var1, long var2);
public native void monitorEnter(Object var1);
public native void monitorExit(Object var1);
public native boolean tryMonitorEnter(Object var1);
8、类定义
public native Class<?> defineClass(String var1, byte[] var2, int var3, int var4, ClassLoader var5, ProtectionDomain var6);
public native Class<?> defineAnonymousClass(Class<?> var1, byte[] var2, Object[] var3);
public native Object allocateInstance(Class<?> var1) throws InstantiationException;
public native boolean shouldBeInitialized(Class<?> var1);
public native void ensureClassInitialized(Class<?> var1);
9、内存屏障
//保证在这个屏障之前的所有读操作都已经完成
public native void loadFence();
//保证在这个屏障之前的所有写操作都已经完成
public native void storeFence();
//保证在这个屏障之前的所有读写操作都已经完成
public native void fullFence();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。