class Info {
private String name = "张三";
private String desc = "一个普通的人";
private boolean flag = false ;
/*
* false:表示不允许生产,但是允许取走内容
* true:表示允许生产,但是不允许取走
* */
public synchronized void set(String name,String desc){
if(!flag){ // 不能生产,要等待
try {
super.wait() ;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.setName(name) ;
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.setDesc(desc) ;
this.flag = false ; // 不能生产了
super.notify() ; // 唤醒其他等待的线程
}
public synchronized void get(){
if(flag){ // 不能取走,要等待
try {
super.wait() ;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.name + " --> " + this.desc) ;
this.flag = true ;
super.notify() ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}