死锁代码:
package day21.dmo06;
public class Demo {
public static void main(String[] args) {
Object objA = new Object();
Object objB = new Object();
new Thread(()->{
while (true){
synchronized (objA){
synchronized (objB){
System.out.println("小胖同学在走路");
}
}
}
}).start();
new Thread(()->{
while (true){
synchronized (objB){
synchronized (objA){
System.out.println("小小同学再走路");
}
}
}
}).start();
}
}
怎么知道怎么去查看是死锁呢?
打开cmd:输入jps
C:UsersAdministrator>jps
11472
13664 Launcher
15024 Demo
2384 Jps
15100 Demo
15100为地址 Demo文件名
再次提醒输入jastack 15100 时需要代码真正执行而且处于死锁状态
C:UsersAdministrator>jstack 15100
查看这串代码:
"Thread-1":
at day21.dmo06.Demo.lambda$main$1(Demo.java:20)
(Demo.java:20),为文件名字的第20行进入死锁状态
"Thread-0":
at day21.dmo06.Demo.lambda$main$0(Demo.java:11)
(Demo.java:11)为文件名字的第11行进入死锁状态



