public class DeadLock {
public static void main(String[] args) {
MakeUp person1 = new MakeUp(0,"小王");
MakeUp person2 = new MakeUp(1,"小李");
person1.start();
person2.start();
}
}
//物品1
class Goods1{
}
//物品2
class Goods2{
}
class MakeUp extends Thread{
private Goods1 goods1 = new Goods1();
private Goods2 goods2 = new Goods2();
int choice;
String personName;
MakeUp(int choice,String personName){
this.choice = choice;
this.personName = personName;
}
@Override
public void run() {
try {
Change();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void Change() throws InterruptedException {
if (choice == 0){
synchronized (goods1){
System.out.println(this.personName + "已经拥有goods1");
Thread.sleep(1000);
synchronized (goods2){
System.out.println(this.personName + "还想拥有goods2");
}
}
}else {
synchronized (goods2){
System.out.println(this.personName + "已经拥有goods2");
Thread.sleep(1000);
synchronized (goods1){
System.out.println(this.personName + "还想拥有goods1");
}
}
}
}
}
运行结果:
小王已经拥有goods1
小李已经拥有goods2
小王还想拥有goods2
小李还想拥有goods1
然后就停止了