死锁
public class DeadLock {
public static void main(String[] args) {
DeadLock dl = new DeadLock();
dl.myRun();
}
public void myRun() {
MyLock ml = new MyLock();
Thread t1 = new Thread(ml,"线程1");
Thread t2 = new Thread(ml,"线程2");
t1.start();
t2.start();
}
public class MyLock implements Runnable{
private boolean flag = true;
private Object key1 = new Object();
private Object key2 = new Object();
public void run() {
if(flag) {
flag = false;
synchronized(key1) {
String name = Thread.currentThread().getName();
System.out.println(name + "进入了");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(key2) {
String n = Thread.currentThread().getName();
System.out.println(n + "进入了");
}
}
}else {
flag = true;
synchronized(key2) {
String name = Thread.currentThread().getName();
System.out.println(name + "进入了");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(key1) {
String n = Thread.currentThread().getName();
System.out.println(n + "进入了");
}
}
}
}
}
}
程序运行之后结果如下:

线程1和线程2永远也不会进入对方进程,实现了一个简单的死锁。

浙公网安备 33010602011771号