1.操作内存功能:
分配内存
public native long allocateMemory ( long var1) ;
重新分配内存
public native long reallocateMemory ( long var1, long var3) ;
内存赋值
public native void setMemory ( Object var1, long var2, long var4, byte var6) ;
复制内存
public native void copyMemory ( Object var1, long var2, Object var4, long var5, long var7) ;
释放内存
public native void freeMemory ( long var1) ;
1.1操作变量内存:
public native byte getByte ( long var1) ;
public native void putByte ( long var1, byte var3) ;
public native short getShort ( long var1) ;
public native void putShort ( long var1, short var3) ;
public native char getChar ( long var1) ;
public native void putChar ( long var1, char var3) ;
public native int getInt ( long var1) ;
public native void putInt ( long var1, int var3) ;
public native long getLong ( long var1) ;
public native void putLong ( long var1, long var3) ;
public native float getFloat ( long var1) ;
public native void putFloat ( long var1, float var3) ;
public native double getDouble ( long var1) ;
public native void putDouble ( long var1, double var3) ;
public native long getAddress ( long var1) ;
public native void putAddress ( long var1, long var3) ;
1.2操作对象内存:
public native Object allocateInstance ( Class< ? > var1) throws InstantiationException;
public native long staticFieldOffset ( Field var1) ;
public native long objectFieldOffset ( Field var1) ;
public native Object staticFieldBase ( Field var1) ;
public native Object getObjectVolatile ( Object var1, long var2) ;
public native void putObjectVolatile ( Object var1, long var2, Object var4) ;
1.3操作数组内存:
public native int arrayBaseOffset ( Class< ? > var1) ;
public native int arrayIndexScale ( Class< ? > var1) ;
1.4volatile变量操作:
public native int getIntVolatile ( Object var1, long var2) ;
public native void putIntVolatile ( Object var1, long var2, int var4) ;
public native boolean getBooleanVolatile ( Object var1, long var2) ;
public native void putBooleanVolatile ( Object var1, long var2, boolean var4) ;
public native byte getByteVolatile ( Object var1, long var2) ;
public native void putByteVolatile ( Object var1, long var2, byte var4) ;
public native short getShortVolatile ( Object var1, long var2) ;
public native void putShortVolatile ( Object var1, long var2, short var4) ;
public native char getCharVolatile ( Object var1, long var2) ;
public native void putCharVolatile ( Object var1, long var2, char var4) ;
public native long getLongVolatile ( Object var1, long var2) ;
public native void putLongVolatile ( Object var1, long var2, long var4) ;
public native float getFloatVolatile ( Object var1, long var2) ;
public native void putFloatVolatile ( Object var1, long var2, float var4) ;
public native double getDoubleVolatile ( Object var1, long var2) ;
public native void putDoubleVolatile ( Object var1, long var2, double var4) ;
2.cas操作:
对象cas赋值操作
public final native boolean compareAndSwapObject ( Object var1, long var2, Object var4, Object var5) ;
整型cas赋值操作
public final native boolean compareAndSwapInt ( Object var1, long var2, int var4, int var5) ;
长整型cas赋值操作
public final native boolean compareAndSwapLong ( Object var1, long var2, long var4, long var6) ;
整型加运算cas操作
public final int getAndAddInt ( Object var1, long var2, int var4) {
int var5;
do {
var5 = this . getIntVolatile ( var1, var2) ;
} while ( ! this . compareAndSwapInt ( var1, var2, var5, var5 + var4) ) ;
return var5;
}
长整型加运算cas操作
public final long getAndAddLong ( Object var1, long var2, long var4) {
long var6;
do {
var6 = this . getLongVolatile ( var1, var2) ;
} while ( ! this . compareAndSwapLong ( var1, var2, var6, var6 + var4) ) ;
return var6;
}
整型赋值cas自旋操作
public final int getAndSetInt ( Object var1, long var2, int var4) {
int var5;
do {
var5 = this . getIntVolatile ( var1, var2) ;
} while ( ! this . compareAndSwapInt ( var1, var2, var5, var4) ) ;
return var5;
}
长整型赋值cas自旋操作
public final long getAndSetLong ( Object var1, long var2, long var4) {
long var6;
do {
var6 = this . getLongVolatile ( var1, var2) ;
} while ( ! this . compareAndSwapLong ( var1, var2, var6, var4) ) ;
return var6;
}
对象赋值cas自旋操作
public final Object getAndSetObject ( Object var1, long var2, Object var4) {
Object var5;
do {
var5 = this . getObjectVolatile ( var1, var2) ;
} while ( ! this . compareAndSwapObject ( var1, var2, var5, var4) ) ;
return var5;
}
3.内存屏障功能:
读内存屏障
public native void loadFence ( ) ;
写内存屏障
public native void storeFence ( ) ;
读写内存屏障
public native void fullFence ( ) ;
4.线程操作功能:
线程释放
public native void unpark ( Object var1) ;
线程挂起
public native void park ( boolean var1, long var2) ;