用Java写一个死锁的例子
时间: 2023-08-29 19:07:42 浏览: 91
java 一个死锁的例子
5星 · 资源好评率100%
下面是一个简单的 Java 死锁示例:
```java
public class DeadlockExample {
public static void main(String[] args) {
Object resource1 = new Object();
Object resource2 = new Object();
Thread thread1 = new Thread(() -> {
synchronized (resource1) {
System.out.println("Thread 1 acquired resource 1");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (resource2) {
System.out.println("Thread 1 acquired resource 2");
}
}
});
Thread thread2 = new Thread(() -> {
synchronized (resource2) {
System.out.println("Thread 2 acquired resource 2");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (resource1) {
System.out.println("Thread 2 acquired resource 1");
}
}
});
thread1.start();
thread2.start();
}
}
```
在这个例子中,两个线程都需要获取两个资源,但是它们获取资源的顺序不同,因此会发生死锁。线程 1 获取了资源 1 并等待资源 2,线程 2 获取了资源 2 并等待资源 1,因此它们都无法继续执行,进入了死锁状态。
阅读全文