public class DeadLock {
public static void main(String[] args) {
make first = new make(0, “线程一”);
make second = new make(1, “线程二”);
first.start(); //start 开启新线程,run方法只是普通调用
second.start();
}
}
class Class1{ //空类,仅为了实现死锁
}
class Class2{ //空类,仅为了实现死锁
}
class make extends Thread{
static Class1 class1 = new Class1(); //new个子类,static实现数据共享
static Class2 class2 = new Class2(); //new个子类,static实现数据共享
int choice;
String name;
make(int choice,String name){ //构造函数
this.choice = choice;
this.name = name;
}
private void make() throws InterruptedException { //主实现函数
if(choice==0){
synchronized(class1){
System.out.println(name+"获得了class1的锁");
Thread.sleep(1000);
}
synchronized(class2){
System.out.println(name+"获得了class2的锁");
}
}else{
synchronized(class2){
System.out.println(name+"获得了class2的锁");
Thread.sleep(2000);
}
synchronized(class1){
System.out.println(name+"获得了class1的锁");
}
}
}
@Override
public void run() {
try {
make();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}