博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java未开源的Unsafe类
阅读量:5221 次
发布时间:2019-06-14

本文共 1003 字,大约阅读时间需要 3 分钟。

如何使用Unsafe类呢?

方式一:通过Unsafe提供的工厂方法。

Unsafe unsafe = Unsafe.getUnsafe(); 通过这样的方式获得Unsafe的实力会抛出异常信息,因为在unsafe的源码中会有对安全性的检查public static Unsafe getUnsafe() {        Class cc = sun.reflect.Reflection.getCallerClass(2);        if (cc.getClassLoader() != null)            throw new SecurityException("Unsafe");        return theUnsafe;    }Exception in thread "main" java.lang.SecurityException: Unsafe	at sun.misc.Unsafe.getUnsafe(Unsafe.java:68)	at org.wk.core.concurrent.InitUnsafe.main(InitUnsafe.java:12)

方式二:通过反射的方式。

因为在开源版本的Unsafe.java中声明了一个实例域,所以我们可以通过反射的方式来获得这个域。

 

private static final Unsafe theUnsafe = new Unsafe();//使用方法private static Unsafe getUnsafeInstance() throws SecurityException,			NoSuchFieldException, IllegalArgumentException,			IllegalAccessException {		Field theUnsafeInstance = Unsafe.class.getDeclaredField("theUnsafe");		theUnsafeInstance.setAccessible(true);		return (Unsafe) theUnsafeInstance.get(Unsafe.class);	}

 

 

转载于:https://www.cnblogs.com/focusj/archive/2012/02/20/2359119.html

你可能感兴趣的文章
C# winform DataGridView 常见属性
查看>>
逻辑运算和while循环.
查看>>
Nhiberate (一)
查看>>
c#后台计算2个日期之间的天数差
查看>>
安卓开发中遇到的小问题
查看>>
ARTS打卡第3周
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
svn客户端清空账号信息的两种方法
查看>>
springboot添加servlet的两种方法
查看>>
java的Array和List相互转换
查看>>
layui父页面执行子页面方法
查看>>
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>
IE11兼容IE8的设置
查看>>
windows server 2008 R2 怎么集成USB3.0驱动
查看>>
Foxmail:导入联系人
查看>>