在 Java 中,死锁是指两个或多个线程被永久阻塞,它们都在等待被其他线程占用的资源,从而导致程序无法继续执行下去的情况。
package com.yuanmomo.demo;
public class DeadlockExample {
public static Object lock1 = new Object();
public static Object lock2 = new Object();
public static void main(String[] args) {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Thread 1-锁定lock1");
synchronized (lock1) {
try {
System.out.println("Thread 1-锁定lock1");
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 1-锁定lock2");
synchronized (lock2) {
System.out.println("Thread 1-锁定lock2完成");
}
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Thread 2锁定lock2-lock1");
synchronized (lock2) {