1. 问题
2. 解答
- 在多线程程序中,使用了多把锁,造成线程之间相互等待,程序不往下走了,就是死锁;
- 死锁的条件:有多把锁,有多个线程,有同步代码块嵌套;
- Java 实例:
public class Test {
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
new Thread(mr).start();
new Thread(mr).start();
}
}
class MyRunnable implements Runnable {
Object objA = new Object();
Object objB = new Object();
@Override
public void run() {
synchronized (objA) {
System.out.println("嵌套1 objA");
synchronized (objB) {
System.out.println("嵌套1 objB");
}
}
synchronized (objB) {
System.out.println("嵌套2 objB");
synchronized (objA) {
System.out.println("嵌套2 objA");
}
}
}
}