java 线程分析 jps jstack 分析死锁

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36666651/article/details/82829864

jstack可以导出线程信息

在启动java项目时,会打印对应的端口信息,通过端口我们可以查询到对应的进程id
linux下:

netstat -tunlp | grep [port]

windows下:

netstat -ano | findstr [port]

也可以使用jdk提供的工具jps查询进程信息:

jps

然后使用jstack就可以导出对应的线程信息:

jstack [进程id] > [导出文件存储的位置]

测试代码如下:

package com.wk.concurrency.demo;

public class DeadLockDemo {
    public static String a = "A";
    public static String b = "B";

    public static void main(String[] args) {
        new DeadLockDemo().deadLock();
    }

    private void deadLock() {
        Thread t1 = new Thread(() -> {
            synchronized (a) {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (b) {
                    System.out.println("1");
                }
            }
        });
        Thread t2 = new Thread(() -> {
            synchronized (b) {
                synchronized (a) {
                    System.out.println("2");
                }
            }
        });
        t1.start();
        t2.start();
    }
}

通过jstack导出dump文件后,可以发现以下内容:

Java stack information for the threads listed above:
===================================================
"Thread-1":
	at com.wk.concurrency.demo.DeadLockDemo.lambda$deadLock$1(DeadLockDemo.java:27)
	- waiting to lock <0x00000007412cd8d0> (a java.lang.String)
	- locked <0x00000007412cd900> (a java.lang.String)
	at com.wk.concurrency.demo.DeadLockDemo$$Lambda$2/804581391.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)
"Thread-0":
	at com.wk.concurrency.demo.DeadLockDemo.lambda$deadLock$0(DeadLockDemo.java:20)
	- waiting to lock <0x00000007412cd900> (a java.lang.String)
	- locked <0x00000007412cd8d0> (a java.lang.String)
	at com.wk.concurrency.demo.DeadLockDemo$$Lambda$1/6738746.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:745)

Found 1 deadlock.

可以看到死锁,以及死锁产生的位置。

猜你喜欢

转载自blog.csdn.net/qq_36666651/article/details/82829864