本例子演示了另外一种修改变量值的方式,希望可以让读者从另外一个角度看待变量,欢迎大家讨论。
请看例子
package concurrentTest; import java.lang.reflect.Field; import sun.misc.Unsafe; /** * jdk 提供了一个unsafe类来直接通过 内存地址来操作变量 * 该例子演示了 另外一种变换 变量值的方式 * @Package concurrentTest * @author liukunyang * @date 2013-12-11 下午02:36:23 * @version V1.0 */ public class UnsafeTest { private int i; public int getI() { return i; } public void setI(int i) { this.i = i; } /** * @author liukunyang * @date 2013-3-20 * @param args * @throws NoSuchFieldException * @throws SecurityException */ public static void main(String[] args) throws SecurityException, NoSuchFieldException { // TODO Auto-generated method stub UnsafeTest ust = new UnsafeTest(); /** * 抛unsafe security异常,所以通过反射调用 * unsafe直接访问内存,所以不应在不受信用的类中访问 * public static Unsafe getUnsafe() { * Class cc = sun.reflect.Reflection.getCallerClass(2); * if (cc.getClassLoader() != null) * throw new SecurityException("Unsafe"); * return theUnsafe; * } * */ // Unsafe unsafe = Unsafe.getUnsafe(); Unsafe unsafe =null; try{ Class<?> clazz = Unsafe.class; Field f; f = clazz.getDeclaredField("theUnsafe"); f.setAccessible(true); unsafe = (Unsafe) f.get(clazz); } catch (IllegalAccessException e) { e.printStackTrace(); }catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } Long offfset = unsafe.objectFieldOffset(UnsafeTest.class.getDeclaredField("i")); unsafe.putInt(ust, offfset, 2);//修改掉i变量的值。 System.out.println( ust.getI() ); } }
相关推荐
CAS算法的出现使得在不使用synchronize这种“悲观锁”依然可以实现数据的安全访问,CAS算法是指先读取要修改的变量值,对它进行计算,然后执行检查并更新这个步骤(更新前判断那个值是否是之前那个读到的值),检查...
JDK8中sun.misc下UnSafe类源代码 UnSafe.java JDK8中sun.misc下UnSafe类源代码 UnSafe.java
Java Unsafe类1
JDK8中sun.misc包下的UnSafe类,想查看源码的就拿走,没积分的请与我联系!xtfggef@gmail.com
CS使用Unsafe的方法向DLL传参 由一个实例开始: c++中函数声明如下: bool Test(float** arr,int rows,int cols); 这个函数在C#中怎么使用,直接传入single[,]出现错误”尝试读取或写入受保护的内存",那到底...
在阅读AtomicInteger的源码时,看到了这个类:sum.msic.Unsafe,之前从没见过。所以花了点时间研究了下,下面这篇文章主要给大家介绍了关于Java中Unsafe类的相关资料,需要的朋友可以参考借鉴,下面来一起学习学习吧
并发作为 Java 中非常重要的一部分,其内部大量使用了 Unsafe 类,它为 java.util.concurrent 包中的类提供了底层支持。
过度的使用Unsafe类会使得出错的几率变大,因此Java官方并不建议使用的,官方文档也几乎没有。Oracle正在计划从Java 9中去掉Unsafe类,如果真是如此影响就太大了。 Unsafe类提供了以下这些功能: 一、内存管理。包括...
其实Java官方不推荐使用Unsafe类,因为官方认为,这个类别人很难正确使用,非正确使用会给JVM带来致命错误...但还是要会使用,下面这篇文章就来给大家简单的谈一谈关于Java中Unsafe类的相关资料,需要的朋友可以参考下
unsafe-helper-包含一些简单的方法,这些方法使使用sun.misc.Unsafe更容易。 unsafe-collection-在ArrayList上建模的示例列表,该列表不存储对集合内对象的引用,而是直接将元素复制到列表中。 这有一些有趣的特性...
主要给大家介绍了关于golang利用unsafe操作未导出变量-Pointer使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
对Netty中的Unsafe做了简单的总结,构建自己的知识网!!!
java魔法类:Unsafe应用
在Java9中,为了提高JVM的可维护性,Unsafe和许多其他的东西一起都被作为内部使用类隐藏起来了。但是究竟是什么取代Unsafe不得而知,个人推测会有不止一样来取代它,那么问题来了,到底为什么要使用Unsafe? 做...
sun.misc.Unsafe源码文件,需要学习的带走。希望能够帮助到大家。
不安全适配器一个工具包,用于协助使用Java Unsafe类来分配和管理本地堆外内存块。
我们经常在JUC包下的ConcurrentHashMap、Atomic开头的原子操作类、AQS以及LockSupport里面看到Unsafe类的身影,这个Unsafe类究竟是干什么的,本文可以带着读者一探究竟。 Java和C++、C语言的一个重要区别,就是Java...
解决VS中This function or variable may be unsafe的安全检查错误
主要给大家介绍了关于Java并发编程学习之Unsafe类与LockSupport类源码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
Java 多线程与并发(8_26)-JUC原子类_ CAS, Unsafe和原子类详解