一、产生条件
synchronized的嵌套
二、代码示例
Mythread类
package huang1;
public class Mythread implements Runnable {
/*
锁对象唯一
*/
Object object1 = new Object();
Object object2 = new Object();
@Override
public void run() {
String name = Thread.currentThread().getName();
String s1 = "线程A";
String s2 = "线程B";
if (name.equals(s1)) {
synchronized (object1) {
System.out.println("线程A拿到了A锁");
synchronized (object2) {
System.out.println("线程A拿到了B锁");
}
}
}
if (name.equals(s2)) {
synchronized (object2) {
System.out.println("线程B拿到了B锁");
synchronized (object1) {
System.out.println("线程B拿到了A锁");
}
}
}
}
}
TextMythed类
package huang1;
public class TextMythed {
public static void main(String[] args) {
Mythread s1 = new Mythread();
Thread t1 = new Thread(s1, "线程A");
Thread t2 = new Thread(s1, "线程B");
t1.start();
t2.start();
}
}
三、运行结果展示