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();

一只鱼
49 声望1 粉丝

« 上一篇
零拷贝
下一篇 »
ThreadState