使用LockSupport异常没有释放锁,导致死锁

##死锁代码

复制代码
public class LockSupportThreadTest {

    public static void main(String[] args) {
        LockSupportThreadTest threadTest = new LockSupportThreadTest();
        Thread yym_user_thread2 = new Thread() {
            public void run() {
                LockSupport.park();
                System.out.println("yym_user_thread2");
                threadTest.resources(2);
            }
        };

        Thread yym_user_thread1 = new Thread() {
            public void run() {
                System.out.println("yym_user_thread1");
                threadTest.resources(0);
                LockSupport.unpark(yym_user_thread2);
            }
        };
        yym_user_thread1.setName("yym_user_thread1");
        yym_user_thread1.start();
        //
        Thread.yield();Thread.yield();Thread.yield();
        Thread.yield();Thread.yield();Thread.yield();
        yym_user_thread2.setName("yym_user_thread2");
        yym_user_thread2.start();
    }

    public void resources(int number) {
        int i = 10/number;
        System.out.println("resources"+i);
    }

}

##jstack查看死锁原因,yym_user_thread2没有其他线程唤醒

java 复制代码
"yym_user_thread2" #27 prio=5 os_prio=0 cpu=0.00ms elapsed=96.06s tid=0x0000022b79380000 nid=0x35784 waiting on condition  [0x00000070d84ff000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@11.0.19/Native Method)
        at java.util.concurrent.locks.LockSupport.park(java.base@11.0.19/LockSupport.java:323)
        at com.newland.mi.thread.LockSupportThreadTest$1.run(LockSupportThreadTest.java:11)

##以上死锁产生原因,还是由于代码书写不规范产生。在finally释放锁

java 复制代码
try {
                    threadTest.resources(0);
                }finally {
                    LockSupport.unpark(yym_user_thread2);
                }
相关推荐
MY_TEUCK3 小时前
【Java 后端】SpringBoot 登录认证与会话跟踪实战(JWT + Filter/Interceptor)
java·开发语言·spring boot
今天长肉了吗3 小时前
银行风控项目踩坑实录:指标跑了6小时,风险评分全挂了
java
QQ2422199793 小时前
基于python+微信小程序的家教管理系统_mh3j9
开发语言·python·微信小程序
随读手机3 小时前
多式联运信息交互平台完整方案(2026版)
java·ai·eclipse·云计算·区块链
沐知全栈开发3 小时前
JavaScript 条件语句
开发语言
RSTJ_16253 小时前
PYTHON+AI LLM DAY THREETY-SEVEN
开发语言·人工智能·python
清水白石0084 小时前
《Python性能深潜:从对象分配开销到“小对象风暴”的破解之道(含实战与最佳实践)》
开发语言·python
Je1lyfish4 小时前
CMU15-445 (2025 Fall/2026 Spring) Project#3 - QueryExecution
linux·c语言·开发语言·数据结构·数据库·c++·算法
许彰午4 小时前
03-二叉树——从递归遍历到非递归实现
java·算法
nj01284 小时前
Spring 循环依赖详解:三级缓存、早期引用、AOP 代理与懒加载
java·spring·缓存