import java.util.concurrent.locks.ReentrantLock;
/**
* 死锁演示.<br>
* @author gongqiang <br>
* @version 1.0.0 2021年6月4日<br>
* @see
* @since JDK 1.5.0
*/
public class DeadLockDemo {
/**
* @param args
*/
public static void main(String[] args) {
ReentrantLock lockA = new ReentrantLock();
ReentrantLock lockB = new ReentrantLock();
new Thread(() -> {
while (true) {
try {
lockA.lock();
System.out.println(Thread.currentThread().getName() + "成功获取锁A,等待3秒获取锁B...");
Thread.sleep(3 * 1000);
lockB.lock();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}).start();
new Thread(() -> {
while (true) {
try {
lockB.lock();
System.out.println(Thread.currentThread().getName() + "成功获取锁B,等待3秒获取锁A...");
Thread.sleep(3 * 1000);
lockA.lock();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}).start();
try {
Thread.sleep(60 * 60 * 1000);
} catch (InterruptedException e) {
// 无需处理.
}
}
}