此博客意在优化之前几篇博客的代码,使得变量私有化,具体如下
class Res{
private String name;
private String sex;
private boolean flag;
//存储数据
public synchronized void set(String name,String sex){
if(flag){
try{this.wait();}catch(InterruptedException e){e.printStackTrace();}
}
this.name = name;
this.sex = sex;
flag= true;
notify();
}
//输出数据
public synchronized void out(){
if(!flag){
try{this.wait();}catch(InterruptedException e){e.printStackTrace();}
}
System.out.println(name+"...."+sex);
flag = false;
notify();
}
}
//输入任务
class Input implements Runnable{
private Res res;
public Input(Res res){
this.res = res;
}
public void run(){
int i = 1;
while(true){
if(i==1){
res.set("张三","男");
}else{
res.set("李四","女");
}
i = (i+1)%2;
}
}
}
//输出任务
class Output implements Runnable{
private Res res;
public Output(Res res){
this.res = res;
}
public void run(){
while(true){
res.out();
}
}
}
class test{
public static void main(String[] args){
Res res = new Res();
Input in = new Input(res);
Output out = new Output(res);
Thread t1 = new Thread(in);
Thread t2 = new Thread(out);
t1.start();
t2.start();
}
}