Unsafe类的使用

####1.unsafe类的使用

unsafe类一般作为一个静态变量存储在一个类里面,他可以类中某个属性的内存偏移地址,需要修改属性是传入类对应对象的实例,从而修改指定对象实例的属性值
1.操纵对象属性

public native long objectFieldOffset(Field f);

通过此方法,可以获取类中某个属性的内存偏移地址,然后可根据偏移地址直接对对象的属性进行修改,属性是否可读都无所谓,都能修改。
2.操作数组元素

public native int arrayBaseOffset(Class arrayClass);
public native int arrayIndexScale(Class arrayClass);

3.线程挂起与恢复

将一个线程进行挂起是通过park方法实现的,调用 park后,线程将一直阻塞直到超时或者中断等条件出现。unpark可以终止一个挂起的线程,使其恢复正常。整个并发框架中对线程的挂起操作被封装在 LockSupport类中,LockSupport类中有各种版本pack方法,但最终都调用了Unsafe.park()方法。

参考链接:https://www.jianshu.com/p/cda24891f9e4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值