用java编写一个会导致死锁的程序
时间: 2024-05-08 12:20:58 浏览: 69
java 一个死锁的例子
5星 · 资源好评率100%
以下是一个简单的 Java 程序,其中两个线程试图以不同的顺序锁定两个共享的对象,导致死锁。
```java
public class DeadlockDemo {
private static Object lock1 = new Object();
private static Object lock2 = new Object();
public static void main(String[] args) {
Thread t1 = new Thread() {
public void run() {
synchronized (lock1) {
System.out.println("Thread 1: locked lock 1");
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
synchronized (lock2) {
System.out.println("Thread 1: locked lock 2");
}
}
}
};
Thread t2 = new Thread() {
public void run() {
synchronized (lock2) {
System.out.println("Thread 2: locked lock 2");
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
synchronized (lock1) {
System.out.println("Thread 2: locked lock 1");
}
}
}
};
t1.start();
t2.start();
}
}
```
在这个程序中,t1 线程锁定 lock1,然后尝试锁定 lock2。同时,t2 线程锁定 lock2,然后尝试锁定 lock1。由于两个线程以不同的顺序锁定这两个对象,它们可能会发生死锁。
阅读全文