典型的死锁问题
package com.test;
//典型的死锁
public class Test {
public static void main(String[] args) {
Thread one = new A();
Thread two = new B();
one.start();
two.start();
}
}
class Mylock{
public static Object a = new Object();
public static Object b = new Object();
}
class A extends Thread{
@Override
public void run() {
synchronized (Mylock.a) {
System.out.println("A拿到了a");
synchronized (Mylock.b) {
System.out.println("A拿到了b");
System.out.println("A拿到了a和b");
}
}
}
}
class B extends Thread{
@Override
public void run() {
synchronized (Mylock.b) {
System.out.println("B拿到了b");
synchronized (Mylock.a) {
System.out.println("B拿到了a");
System.out.println("B拿到了a和b");
}
}
}
}
输出
A拿到了a
B拿到了b