您的位置:首页 > 编程语言 > Java开发

JAVA 线程间通信 - 生产者与消费者

2015-01-09 13:33 253 查看
/*
多线程编程 生产者和消费者
*/

class Res
{
private int count=0;
private String name;

private	boolean flag = false;

public synchronized void set(String name)
{
while(flag)
try{wait();}catch(Exception e){}

this.name = name+ " "+ (++count);
System.out.println(Thread.currentThread().getName() + "--生产者--" + this.name);

flag = true;
this.notifyAll();
}

public synchronized void out()
{
while(!flag)
try{this.wait();}catch(Exception e){}

System.out.println(Thread.currentThread().getName() + "--消费者----" + this.name);

flag = false;
this.notifyAll();//唤醒所有的等待线程
}

}

class Producer implements Runnable
{
Res r = new Res();

Producer(Res r)
{
this.r = r;
}

public void run()
{
while(true)
r.set("商品");
}
}

class Consumer implements Runnable
{
Res r = new Res();

Consumer(Res r)
{
this.r = r;
}

public void run()
{
while(true)
r.out();
}

}

class TestDemo
{
public static void main(String []args)
{
Res r = new Res();

Producer p = new Producer(r);
Consumer c = new Consumer(r);

Thread t1 = new Thread(p);
Thread t2 = new Thread(c);
Thread t3 = new Thread(p);
Thread t4 = new Thread(c);

t1.start();
t2.start();
t3.start();
t4.start();
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: