public class UnsafeUtils
extends java.lang.Object
| 限定符和类型 | 字段和说明 |
|---|---|
static int |
ADDRESS_SIZE |
static int |
addressSize |
static long |
ARRAY_BOOLEAN_BASE_OFFSET |
static long |
ARRAY_BOOLEAN_INDEX_SCALE
1
|
static long |
ARRAY_BYTE_BASE_OFFSET |
static long |
ARRAY_BYTE_INDEX_SCALE |
static long |
ARRAY_CHAR_BASE_OFFSET |
static long |
ARRAY_CHAR_INDEX_SCALE |
static long |
ARRAY_DOUBLE_BASE_OFFSET |
static long |
ARRAY_DOUBLE_INDEX_SCALE |
static long |
ARRAY_FLOAT_BASE_OFFSET |
static long |
ARRAY_FLOAT_INDEX_SCALE |
static long |
ARRAY_INT_BASE_OFFSET |
static long |
ARRAY_INT_INDEX_SCALE |
static long |
ARRAY_LONG_BASE_OFFSET |
static long |
ARRAY_LONG_INDEX_SCALE |
static long |
ARRAY_OBJECT_BASE_OFFSET |
static long |
ARRAY_OBJECT_INDEX_SCALE |
static long |
ARRAY_SHORT_BASE_OFFSET |
static long |
ARRAY_SHORT_INDEX_SCALE |
| 构造器和说明 |
|---|
UnsafeUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static int |
addressSize() |
static <T> T |
allocateInstance(java.lang.Class<T> t)
直接创建对象,不会触发初始化代码块和构造函数
|
static int |
arrayBaseOffset(java.lang.Class arrayClass) |
static int |
arrayIndexScale(java.lang.Class<?> arrayClass) |
static boolean |
compareAndSwapInt(java.lang.Object o,
long offset,
int oldVal,
int newVal) |
static boolean |
compareAndSwapLong(java.lang.Object o,
long offset,
long oldVal,
long newVal) |
static boolean |
compareAndSwapObject(java.lang.Object o,
long offset,
java.lang.Object oldVal,
java.lang.Object newVal) |
static void |
fullFence() |
static long |
getAddress(java.lang.Object obj)
获取对象的内存地址
|
static int |
getAndAddInt(java.lang.Object o,
long offset,
int newValue) |
static long |
getAndAddLong(java.lang.Object o,
long offset,
long newValue) |
static int |
getAndSetInt(java.lang.Object o,
long offset,
int newValue) |
static long |
getAndSetLong(java.lang.Object o,
long offset,
long newValue) |
static java.lang.Object |
getAndSetObject(java.lang.Object o,
long offset,
java.lang.Object newValue) |
static boolean |
getBoolean(java.lang.Object o,
long offset) |
static boolean |
getBooleanVolatile(java.lang.Object o,
long offset) |
static byte |
getByte(java.lang.Object o,
long offset) |
static byte |
getByteVolatile(java.lang.Object o,
long offset) |
static char |
getChar(java.lang.Object o,
long offset) |
static char |
getCharVolatile(java.lang.Object o,
long offset) |
static double |
getDouble(java.lang.Object o,
long offset) |
static double |
getDoubleVolatile(java.lang.Object o,
long offset) |
static float |
getFloat(java.lang.Object o,
long offset) |
static float |
getFloatVolatile(java.lang.Object o,
long offset) |
static sun.misc.Unsafe |
getInstance() |
static int |
getInt(java.lang.Object o,
long offset) |
static int |
getIntVolatile(java.lang.Object o,
long offset) |
static long |
getLong(java.lang.Object o,
long offset) |
static long |
getLongVolatile(java.lang.Object o,
long offset) |
static java.lang.Object |
getObject(java.lang.Object o,
long offset) |
static java.lang.Object |
getObjectVolatile(java.lang.Object o,
long offset) |
static short |
getShort(java.lang.Object o,
long offset) |
static short |
getShortVolatile(java.lang.Object o,
long offset) |
static void |
loadFence() |
static long |
objectFieldOffset(java.lang.reflect.Field field) |
static int |
pageSize() |
static void |
putBoolean(java.lang.Object o,
long offset,
boolean val) |
static void |
putBooleanVolatile(java.lang.Object o,
long offset,
boolean value) |
static void |
putByte(java.lang.Object o,
long offset,
byte val) |
static void |
putByteVolatile(java.lang.Object o,
long offset,
byte value) |
static void |
putChar(java.lang.Object o,
long offset,
char val) |
static void |
putCharVolatile(java.lang.Object o,
long offset,
char value) |
static void |
putDouble(java.lang.Object o,
long offset,
double val) |
static void |
putDoubleVolatile(java.lang.Object o,
long offset,
double value) |
static void |
putFloat(java.lang.Object o,
long offset,
float val) |
static void |
putFloatVolatile(java.lang.Object o,
long offset,
float value) |
static void |
putInt(java.lang.Object o,
long offset,
int val) |
static void |
putIntVolatile(java.lang.Object o,
long offset,
int value) |
static void |
putLong(java.lang.Object o,
long offset,
long val) |
static void |
putLongVolatile(java.lang.Object o,
long offset,
long value) |
static void |
putObject(java.lang.Object o,
long offset,
java.lang.Object val) |
static void |
putObjectVolatile(java.lang.Object o,
long offset,
java.lang.Object value) |
static void |
putOrderedInt(java.lang.Object o,
long offset,
int value) |
static void |
putOrderedLong(java.lang.Object o,
long offset,
long value) |
static void |
putOrderedObject(java.lang.Object o,
long offset,
java.lang.Object value) |
static void |
putShort(java.lang.Object o,
long offset,
short val) |
static void |
putShortVolatile(java.lang.Object o,
long offset,
short value) |
static java.lang.Object |
staticFieldBase(java.lang.reflect.Field field) |
static long |
staticFieldOffset(java.lang.reflect.Field field) |
static void |
storeFence() |
static void |
throwException(java.lang.Throwable e)
经常需要catch受检查的异常,然后用某个不受检查的异常包装并抛出
用这个方法可以直接抛不受检查的异常
例: UnsafeUtils.throwException(new Exception());throw new RuntimeException();
这里throw new RuntimeException();只起中断作用,永远不会被执行
|
public static final long ARRAY_BOOLEAN_BASE_OFFSET
public static final long ARRAY_BYTE_BASE_OFFSET
public static final long ARRAY_SHORT_BASE_OFFSET
public static final long ARRAY_CHAR_BASE_OFFSET
public static final long ARRAY_INT_BASE_OFFSET
public static final long ARRAY_LONG_BASE_OFFSET
public static final long ARRAY_FLOAT_BASE_OFFSET
public static final long ARRAY_DOUBLE_BASE_OFFSET
public static final long ARRAY_OBJECT_BASE_OFFSET
public static final long ARRAY_BOOLEAN_INDEX_SCALE
public static final long ARRAY_BYTE_INDEX_SCALE
public static final long ARRAY_SHORT_INDEX_SCALE
public static final long ARRAY_CHAR_INDEX_SCALE
public static final long ARRAY_INT_INDEX_SCALE
public static final long ARRAY_LONG_INDEX_SCALE
public static final long ARRAY_FLOAT_INDEX_SCALE
public static final long ARRAY_DOUBLE_INDEX_SCALE
public static final long ARRAY_OBJECT_INDEX_SCALE
public static final int ADDRESS_SIZE
public static final int addressSize
public static sun.misc.Unsafe getInstance()
public static int getInt(java.lang.Object o,
long offset)
public static void putInt(java.lang.Object o,
long offset,
int val)
public static java.lang.Object getObject(java.lang.Object o,
long offset)
public static void putObject(java.lang.Object o,
long offset,
java.lang.Object val)
public static boolean getBoolean(java.lang.Object o,
long offset)
public static void putBoolean(java.lang.Object o,
long offset,
boolean val)
public static byte getByte(java.lang.Object o,
long offset)
public static void putByte(java.lang.Object o,
long offset,
byte val)
public static short getShort(java.lang.Object o,
long offset)
public static void putShort(java.lang.Object o,
long offset,
short val)
public static char getChar(java.lang.Object o,
long offset)
public static void putChar(java.lang.Object o,
long offset,
char val)
public static long getLong(java.lang.Object o,
long offset)
public static void putLong(java.lang.Object o,
long offset,
long val)
public static float getFloat(java.lang.Object o,
long offset)
public static void putFloat(java.lang.Object o,
long offset,
float val)
public static double getDouble(java.lang.Object o,
long offset)
public static void putDouble(java.lang.Object o,
long offset,
double val)
public static long staticFieldOffset(java.lang.reflect.Field field)
public static long objectFieldOffset(java.lang.reflect.Field field)
public static java.lang.Object staticFieldBase(java.lang.reflect.Field field)
public static int arrayBaseOffset(java.lang.Class arrayClass)
public static int arrayIndexScale(java.lang.Class<?> arrayClass)
public static int addressSize()
public static int pageSize()
public static java.lang.Object getObjectVolatile(java.lang.Object o,
long offset)
public static void putObjectVolatile(java.lang.Object o,
long offset,
java.lang.Object value)
public static int getIntVolatile(java.lang.Object o,
long offset)
public static void putIntVolatile(java.lang.Object o,
long offset,
int value)
public static boolean getBooleanVolatile(java.lang.Object o,
long offset)
public static void putBooleanVolatile(java.lang.Object o,
long offset,
boolean value)
public static byte getByteVolatile(java.lang.Object o,
long offset)
public static void putByteVolatile(java.lang.Object o,
long offset,
byte value)
public static short getShortVolatile(java.lang.Object o,
long offset)
public static void putShortVolatile(java.lang.Object o,
long offset,
short value)
public static char getCharVolatile(java.lang.Object o,
long offset)
public static void putCharVolatile(java.lang.Object o,
long offset,
char value)
public static long getLongVolatile(java.lang.Object o,
long offset)
public static void putLongVolatile(java.lang.Object o,
long offset,
long value)
public static float getFloatVolatile(java.lang.Object o,
long offset)
public static void putFloatVolatile(java.lang.Object o,
long offset,
float value)
public static double getDoubleVolatile(java.lang.Object o,
long offset)
public static void putDoubleVolatile(java.lang.Object o,
long offset,
double value)
public static void putOrderedObject(java.lang.Object o,
long offset,
java.lang.Object value)
public static void putOrderedInt(java.lang.Object o,
long offset,
int value)
public static void putOrderedLong(java.lang.Object o,
long offset,
long value)
public static boolean compareAndSwapObject(java.lang.Object o,
long offset,
java.lang.Object oldVal,
java.lang.Object newVal)
public static boolean compareAndSwapInt(java.lang.Object o,
long offset,
int oldVal,
int newVal)
public static boolean compareAndSwapLong(java.lang.Object o,
long offset,
long oldVal,
long newVal)
public static int getAndAddInt(java.lang.Object o,
long offset,
int newValue)
public static long getAndAddLong(java.lang.Object o,
long offset,
long newValue)
public static int getAndSetInt(java.lang.Object o,
long offset,
int newValue)
public static long getAndSetLong(java.lang.Object o,
long offset,
long newValue)
public static java.lang.Object getAndSetObject(java.lang.Object o,
long offset,
java.lang.Object newValue)
public static void loadFence()
public static void storeFence()
public static void fullFence()
public static long getAddress(java.lang.Object obj)
obj - public static <T> T allocateInstance(java.lang.Class<T> t)
throws java.lang.InstantiationException
T - t - java.lang.InstantiationExceptionpublic static void throwException(java.lang.Throwable e)
e -