Unsafe类相关

1.JDK源码中对这个类进行了严格限制,不能通过常规new的方式去获取该类的实例,也不能通过Unsafe.getUnsafe 获得Unsafe对象实例;只能通过反射机制

Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);

2.基于native底层方法对内存进行操作:分配内存,设置内存,释放内存等

 

3.可以定位对象某字段的内存位置,也可以修改对象的字段值,即使它是私有的

4.重要的CAS:给定的对象中,指定属性的值符合预期,则将这个值替换成一个新的值并且返回true;否则就忽略这个替换操作并且返回false

参数分别为:更新的对象,对象中字段的偏移量,修改前的期望值,设置的新的值

更改成功返回true

当expect为 18时:

当expect为 19时:

在利用cas的getAndAddInt等自增的方法:从内存中取初始值,在CAS

5.putXX和 putXXVolatile:直接在内存上设置值,后者带有Volatile 也说明带有可见性 ,对所有线程都是立马可见的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值