sun.misc.Unsafe是jdk并发类库java.util.concurrent包中使用的底层类,该类中的方法都是通过native方法调用操作系统命令。Unsafe类中直接提供操作系统调度命令park、unpark,减少信号量的开销,提高新能。
Unsafe unsafe = Unsafe.getUnsafe(); 通过这样的方式获得Unsafe的实力会抛出异常信息,因为在unsafe的源码中会有对安全性的检查。
通过反射的方式获取Unsafe对象,因为在开源版本的Unsafe.java中声明了一个实例域,所以我们可以通过反射的方式来获得这个域。
private static Unsafe getUnsafeInstance() throws SecurityException,
NoSuchFieldException, IllegalArgumentException,
IllegalAccessException {
Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
return (Unsafe) theUnsafe.get(Unsafe.class); //theUnsafe.get(null);
}