unsafe类核心思想

Unsafe类在Java中提供了一种直接内存访问和低级别同步操作的方式。它包含通过CAS(CompareandSwap)实现线程安全的方法,如compareAndSwap*,以及线程控制的park和unpark方法,用于线程的暂停和唤醒。尽管Unsafe提供了强大功能,但直接使用需谨慎,因为它涉及到潜在的安全风险和稳定性问题。
摘要由CSDN通过智能技术生成

Unsafe类如其名,该类不安全,我们在程序里不能直接调用

构造器

	public static Unsafe getUnsafe() {
        Class var0 = Reflection.getCallerClass();
        if (!VM.isSystemDomainLoader(var0.getClassLoader())) {
            throw new SecurityException("Unsafe");
        } else {
            return theUnsafe;
        }
    }

限制了必须是使用固定的类加载器加载的类才能调用,我们可以实现,但是没必要直接调

个人把Unsafe类的方法分为两个部分
1)通过CAS实现线程安全的方法
2)park和unpark

第一个
通过CAS实现线程安全的方法
举个简单的例子

public final native boolean compareAndSwapObject(Object var1, long var2, Object var4, Object var5);

public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);

public final native boolean compareAndSwapLong(Object var1, long var2, long var4, long var6);

该方法通过true和false告知修改是否成功,实现线程安全

第二个
park和unpark

public native void unpark(Object var1);

public native void park(boolean var1, long var2);

park是线程自己把自己锁住,进行等待
unpark是唤起其他线程,传参一般是待唤起的线程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值