当我们觉得程序可能出现死锁后一行一行排查代码效率是很低的,这时候就想,如果有个功具能直接告诉我线程到底在做什么事情,那效率就可可以有一个很大的提升了,在jdk安装目录下的bin中有一个
样例代码
public class DeadLockDemo {
private static String A = "A";
private static String B = "B";
public static void main(String[] args) {
new DeadLockDemo().deadLock();
}
private void deadLock() {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (A) {
try { Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (B) {
System.out.println("1");
}
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (B) {
synchronized (A) {
System.out.println("2");
}
}
}
});
t1.start();
t2.start();
}
}
点击打开,在左侧找到你正在运行的程序
这样就可以明显的看到死锁产生的原因。