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

java线程通信 生产者与消费者模式

2016-11-23 14:57 453 查看
 //共享队列

class Queue{

int value=0;

boolean isEmpty = true;

public synchronized void put(int v){

if(!isEmpty){

try{

System.out.println("生产者等待消费者消费。。。");

wait();

}catch(InterruptedException e){

e.printStackTrace();

}

}

value += v;

System.out.println("生产者生产了:"+value+"个");

notify();

}

public synchronized int get(){

if(isEmpty){

System.out.println("消费者等待生产者生产。。。");

wait();

}

--value;

System.out.println("消费者消费了一个,剩余:"+value+"个");

if(value < 1 ){
isEmpty = true;
}

notify();

return value;

}

}

//生产者

class Producer extends Thread{

private Queue q;

public Producer(Queue q){

this.q  = q;

}

public void run(){

for(int i=1;i<6;i++){
q.put(i);
}

}

}

//消费者

class Consumer extends Thread{

private Queue q ;

public Consumer (Queue q){

this.q=q;

}

public void run(){

while(true){

q.get();

}

}

}

// 测试

public PCModelTest{

Queue q = new Queue();

Thread producer =newProducer (q);

Thread consumer =new Consumer(q);

producer.start();

consumer.start();

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