死锁造成的原因,两个以上的线程因为争夺资源而互相等待的现象
public class DeadLockDemo{
static class HoldLockThead implements Runnable{
private String lockA;
private String lockB;
public HoldLockThead(String lockA) {
this.lockA = lockA;
this.lockB = lockB;
}
public HoldLockThead(String lockA, String lockB) {
this.lockA = lockA;
this.lockB = lockB;
}
@Override
public void run() {
synchronized (lockA){
System.out.println(Thread.currentThread().getName()+"持有"+lockA+"想要获取"+lockB);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lockB){
System.out.println(Thread.currentThread().getName()+"持有"+lockB+"想要获取"+lockA);
}
}
}
}
public static void main(String[] args) {
String lockA = "lockA";
String lockB = "lockB";
new Thread(new HoldLockThead(lockA,lockB),"aaa").start();
new Thread(new HoldLockThead(lockB,lockA),"bbb").start();
}
}
```排查
jps -l
和jstack加jps -l查出的线程号
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191011235513877.png)