从AtomicXXX稍微说一下Unsafe
来源:互联网 发布:可信的淘宝货源 编辑:程序博客网 时间:2024/06/05 09:27
无聊看了一眼AtomicInteger的源码,早就知道concurrent包里面大量使用了Unsafe来获取offSet,之前都以为Unsafe是拿到类似cpp指针的来直接从内存拿,今天发现不是
private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long valueOffset; static { try { valueOffset = unsafeU.objectFieldOffset (AtomicInteger.class.getDeclaredField("value")); } catch (Exception ex) { throw new Error(ex); } } private volatile int value;
这就很尴尬了,这valueOffset 为什么是static的,就是说所有实例的valueOffset 都是一样的?
后来查了一下objectFieldOffset的真正含义才恍然大悟
Unsafe的objectFieldOffset方法是用于拿到类的属性和类的偏移数值
unsafe.getAndSetInt(this, valueOffset, newValue);
所以unsafe的数值操作方法也要传this,对于每个实例,value的地址都是this+valueOffset
阅读全文
0 0
- 从AtomicXXX稍微说一下Unsafe
- 稍微说下Calendar
- 稍微总结一下
- 从0开始说一下masonry的使用
- 稍微记录一下xamarin的安装过程
- Mongodb总结3-稍微封装一下
- 稍微开始尝试写一下博客WWWW
- 今天稍微学些了一下句柄,记录一下~
- 说一下偏振镜
- 想说一下制度
- 说一下Path类
- 想说一下
- 说一下CFS
- 说一下单元测试!
- 说一下typedef
- 说一下id3决策树
- 说一下Docker(一)
- 说一下近况吧
- linux中内存泄漏的检测(三)定制化的new/delete
- Rebuilding Roads POJ
- ANDROID-GDAL 交叉编译
- iOS 使用信号量来处理多图片上传
- CSS-如何让img图片元素居中
- 从AtomicXXX稍微说一下Unsafe
- 苹果手机的z-index 无效的问题
- 程序
- Error opening file: /sdcard/screenshot.png (Read-only file system) 问题解决
- linux中内存泄漏的检测(四)记录泄漏的大小
- 那些年我犯过的错
- HDU 6105 Gameia 博弈(思维)
- 2017-8-10 Struts2学习笔记二
- C# winform 右键下拉菜单