用Java写一个死锁的例子
时间: 2023-04-02 14:04:25 浏览: 89
我可以回答这个问题。以下是一个用 Java 写的死锁例子:
```java
public class DeadlockExample {
private static Object lock1 = new Object();
private static Object lock2 = new Object();
public static void main(String[] args) {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock1) {
System.out.println("Thread 1 acquired lock1");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock2) {
System.out.println("Thread 1 acquired lock2");
}
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock2) {
System.out.println("Thread 2 acquired lock2");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock1) {
System.out.println("Thread 2 acquired lock1");
}
}
}
});
thread1.start();
thread2.start();
}
}
```
这个例子中,两个线程分别尝试获取 lock1 和 lock2,但是它们的获取顺序不同,导致了死锁的发生。