一 产生死锁的四个条件
1.互斥使用
2.不可抢占
上面的两个条件是同步锁都有的特性
---------------------------------------------------------------------
3.请求和保持
4.循环等待 这个条件是最重要的条件
二 示例
public class Main {
private static final String lockA = "lockA";
private static final String lockB = "lockB";
private static final String lockC = "lockC";
public static void main(String args[]) {
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
synchronized(lockA) {
System.out.println("进入Thread1 的A");
synchronized(lockB) {
System.out.println("进入Thread1 的B");
synchronized(lockC) {
System.out.println("进入Thread1 的C");
}
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
synchronized(lockA) {
System.out.println("进入Thread2 的A");
synchronized(lockC) {
System.out.println("进入Thread2 的B");
synchronized(lockB) {
System.out.println("进入Thread2 的C");
}
}
}}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
synchronized(lockB) {
System.out.println("进入Thread3 的A");
synchronized(lockA) {
System.out.println("进入Thread3 的B");
synchronized(lockC) {
System.out.println("进入Thread3 的C");
}
}
}
}
}
}).start();
}
}