写一个死锁java代码
时间: 2024-05-16 13:16:10 浏览: 101
java 一个死锁的例子
5星 · 资源好评率100%
下面是一个可能导致死锁的 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(() -> {
synchronized (lock1) {
System.out.println("Thread 1 acquired lock1");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock2) {
System.out.println("Thread 1 acquired lock2");
}
}
});
Thread thread2 = new Thread(() -> {
synchronized (lock2) {
System.out.println("Thread 2 acquired lock2");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock1) {
System.out.println("Thread 2 acquired lock1");
}
}
});
thread1.start();
thread2.start();
}
}
```
在上面的代码中,我们有两个线程,线程 1 和线程 2,它们都试图获取两个对象 lock1 和 lock2 的锁。当线程 1 获得 lock1 的锁时,它会尝试获得 lock2 的锁,而线程 2 同时获得了 lock2 的锁,并尝试获取 lock1 的锁。由于两个线程都在等待对方释放锁,因此这个程序会形成死锁状态,无法继续执行。
阅读全文