首页 > 其他分享 >死锁排查

死锁排查

时间:2023-03-19 23:47:13浏览次数:36  
标签:lockB threadA lockA threadB Thread 获取 排查 死锁

1.执行死锁代码

public class DeadLockTest {
    public static void main(String[] args) throws InterruptedException {
        //a线程持有a锁,并尝试获取b锁;b线程持有b锁,并尝试获取a锁
        Object lockA = new Object();
        Object lockB = new Object();

        Thread threadA = new Thread(() -> {
            synchronized (lockA) {
                System.out.println("threadA获取到lockA,尝试获取lockB");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lockB) {
                    System.out.println("threadA获取到lockA,且获取到lockB");
                }
            }
        });

        Thread threadB = new Thread(() -> {
            synchronized (lockB) {
                System.out.println("threadB获取到lockB,尝试获取lockA");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (lockA) {
                    System.out.println("threadB获取到lockB,且获取到lockA");
                }
            }
        });

        threadA.start();
        threadB.start();

        threadA.join();
        threadB.join();
    }
}

2.查看java进程:jsp -l 

 

 

 

 

 3.查看线程堆栈:jstack -l 96354

 

 

 最后明确说明发现了死锁

 

标签:lockB,threadA,lockA,threadB,Thread,获取,排查,死锁
From: https://www.cnblogs.com/katsu2017/p/17234857.html

相关文章

  • cpu飙高排查步骤
    第一步:top,找到使cpu飙高的进程PID  第二步:top-Hp[进程PID],查看线程资源使用情况,假设下面是96009进程中各个线程的资源使用情况 第三步: printf"%x\n"[线程PI......
  • golang中关于死锁的思考与学习
    1、Golang中死锁的触发条件1.1书上关于死锁的四个必要条件的讲解发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行。在讨论处理死锁问题的各......
  • 死锁
    packageedu.wtbu;//死锁:多个线程互相抱着对方需要的资源,然后形成僵持publicclassDemo10{publicstaticvoidmain(String[]args){Makeupg1=newMake......
  • arthas排查线上问题真是太好用了!
    先贴帮助地址 https://arthas.aliyun.com/doc/jfr.html 最近发现的线上问题排查神器,其实也知道大半年了,最近才开始正式使用。也算是多了个定位问题的手段了。......
  • IDEA经常出现假死状态 - 排查解决
    最近使用IDEA过程中,时不时的出现假死的情况,观察cpu和内存均有余量,为了避免重启IDEA,还是花了些时间排查原因。使用jvisualvm观察IDEA进程cpu、堆内存、线程信息等,发现提示......
  • openwrt luci 页面无法访问 问题排查
    说明:本文适用于某些使用了Argon主题的OpenWrt用户问题概况访问luci登录页,刷新半天后显示为白屏但是手机端测试,却又能访问故障排查1.抓包:发现问题使用......
  • 11个步骤排查主机是否被入侵
    11个步骤完美排查linux机器是否已经被入侵入门小站 入门小站 2023-03-1321:50 发表于湖北入门小站分享运维技巧及10k+Stars的开源项目225篇原创内容......
  • linux系统如何查看是否是线程死锁,多线程中如何使用gdb精确定位死锁问题
    在多线程开发过程中很多人应该都会遇到死锁问题,死锁问题也是面试过程中经常被问到的问题,这里介绍在c++中如何使用gdb+python脚本调试死锁问题,以及如何在程序运行过程中......
  • 记一次Elasticsearch GeoIpDownloader的启动异常排查过程
    公众号:MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握!最近碰到了ElasticsearchGeoIpDownloader相关的一个异常,花费了不少精力排查,故此记录一下,希望碰到同样问......
  • gnome-shell 内存占用过高问题排查处理
    查看内存占用TOP10psaux|head-1;psaux|grep-vPID|sort-rn-k+4|head-10查看gnome-shell内存使用情况psauxwww|grepgnome-shell临时解决gnome-shel......