Java多线程系列(五)—LockSupport源码分析

本文深入分析了Java多线程中的LockSupport类,探讨了park()和unpark()方法的作用,以及它们如何避免死锁问题。LockSupport作为锁和其他同步类的基础,提供了线程阻塞和恢复的原语。文章详细阐述了类的属性、方法,并通过实例说明了LockSupport的使用。
摘要由CSDN通过智能技术生成

Java多线程系列(五)—LockSupport源码分析

LockSupport类是实现锁机制和其他同步类的基础,提供了基本线程阻塞和恢复的原语;

LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题

个人主页:tuzhenyu’s page
原文地址:Java多线程系列(五)—LockSupport源码分析

(1) LockSupport类的属性

  • 在类加载时进行初始化,主要包括Unsafe类实例和各个字段在Thread类中的内存偏移量;

private static final sun.misc.Unsafe UNSAFE;
private static final long parkBlockerOffset;
private static final long SEED;
private static final long PROBE;
private static final long SECONDARY;
static {
    try {
        UNSAFE = sun.misc.Unsafe.getUnsafe();    //获取Unsafe实例
        Class<?> tk = Thread.class;
        parkBlockerOffset = UNSAFE.objectFieldOffset
            (tk.getDeclaredField("parkBlocker"));        //获取类属性parkBlocker在Thread类中的偏移量;
        SEED = UNSAFE.objectFieldOffset
            (tk.getDeclaredField(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值