满足死锁产生的四个必要条件:
- 互斥访问
- 请求和保持
- 不可剥夺
- 环路等待
class FirstRunner implements Runnable {
@Override
public void run() {
while (true) {
synchronized (monitor1) {
System.out.println(Thread.currentThread().getName() + " get moniter1");
synchronized (monitor2) {
System.out.println(Thread.currentThread().getName() + " get moniter2");
System.out.println("success");
}
}
}
}
}
class SecondRunner implements Runnable {
@Override
public void run() {
while (true) {
synchronized (monitor1) {
System.out.println(Thread.currentThread().getName() + " get monitor2");
synchronized (monitor2) {
System.out.println(Thread.currentThread().getName() + " get monitor1");
System.out.println("success");
}
}
}
}
}