package 线程冲突3;
/**
* 主线程
*/
public class DeadLockThread {
public static void main(String[] args) {
new doMarkUp(0,"大丫").start();
new doMarkUp(0,"二丫").start();
}
}
/**
* 镜子类
*/
class mirror{
}
/**
* 口红类
*/
class Lipstick{
}
/**
* 化妆线程
*/
class doMarkUp extends Thread{
static mirror m=new mirror();
static Lipstick l=new Lipstick();
private String girlName;
private int flag; //flag=0:拿了口红 flag!=0:拿了镜子
public doMarkUp(int F, String gN) {
this.flag=F;
this.girlName=gN;
}
@Override
public void run() {
this.markUp();
}
public void markUp(){
if(flag==0){
synchronized (l){
System.out.println(this.girlName+"拿了口红");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (m){
System.out.println(this.girlName+"拿了镜子");
}
}
}else{
synchronized (m){
System.out.println(this.girlName+"拿了镜子");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (l){
System.out.println(this.girlName+"拿了口红");
}
}
}
}
}
上述是我看完视频后敲的代码,为什么运行不会出现像视频中死锁的情况呢?