java 消费者 生产者模式(线程间的通信)
package cn.itcast.gz;
/**
* 消费者 生产者模式(线程间的通信)
*
*
*
*/
public class ResourceDemo3 {
public static void main(String[] args) {
Resource3 r = new Resource3();
Input3 input = new Input3(r);
Output3 output = new Output3(r);
Thread t1 = new Thread(input);
Thread t2 = new Thread(output);
t1.start();
t2.start();
}
}
class Resource3 {
private String name;
private String sex;
private boolean flag=false;
public synchronized void setInfo(String name,String sex)
{
if(flag)
try{this.wait();}catch(Exception e){e.printStackTrace();};
this.name = name;
this.sex= sex;
flag = true;
notifyAll();
}
public synchronized void getInfo()
{
if(!flag)
try{this.wait();}catch(Exception e){e.printStackTrace();};
System.out.println("name: "+name +"sex: "+sex);
flag = false;
this.notifyAll();
}
}
class Input3 implements Runnable
{
private Resource3 r;
private int i=0;
public Input3(Resource3 r)
{
this.r = r;
}
@Override
public void run() {
while(true)
{
if(i==0)
{
r.setInfo("小小", "女女女女女女");
}
else
{
r.setInfo("大大", "男");
}
i=(i+1)%2;
}
}
}
class Output3 implements Runnable
{
private Resource3 r;
public Output3(Resource3 r)
{
this.r = r;
}
@Override
public void run() {
while(true)
{
r.getInfo();
}
}
}
