package gcallable;
public class Deadlock {
public static void main(String[] args) {
MarkUp g1 = new MarkUp(0,"灰姑凉");
MarkUp g2 = new MarkUp(1,"安其拉");
g1.start();
g2.start();
}
}
class Lipstik{
}
class Mirror{
}
class MarkUp extends Thread{
Lipstik lipstik = new Lipstik();
Mirror mirror = new Mirror();
int choose;
String girlname;
public MarkUp(int choose, String girlname) {
super();
this.choose = choose;
this.girlname = girlname;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
markUp();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void markUp() throws InterruptedException {
if (choose==0) {
synchronized (lipstik) {
System.out.println(this.girlname+"获得口红的锁");
Thread.sleep(1000);
synchronized (mirror) {
System.out.println(this.girlname+"获得镜子的锁");
}
}
}else {
synchronized (mirror) {
System.out.println(this.girlname+"获得镜子的锁");
Thread.sleep(1000);
synchronized (lipstik) {
System.out.println(this.girlname+"获得口红的锁");
}
}
}
}
}
安其拉获得镜子的锁
灰姑凉获得口红的锁
安其拉获得口红的锁
灰姑凉获得镜子的锁