demo
package com.zcx;
import java.util.concurrent.locks.ReentrantLock;
public class Deadlock {
static ReentrantLock lock1 = new ReentrantLock();
static ReentrantLock lock2 = new ReentrantLock();
public static void main(String[] args) {
System.out.println("args = " + args);
Thread thread1 = new Thread(() -> {
lock1.lock();
System.out.println("线程1锁定lock1");
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
lock2.lock();
System.out.println("线程1锁定lock1");
});
Thread thread2 = new Thread(() -> {
lock2.lock();
System.out.println("线程2锁定lock2");
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
lock1.lock();
System.out.println("线程1锁定lock1");
});
thread1.start();
thread2.start();
try {
Thread.sleep(100000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
运行
windows:
jps
jstack -l 8428
找到死锁