生产与消费者模型

生产者消费者模型
四步骤
生产者在仓满时等待,空仓则生产
消费者在仓满时取物,在仓空时等待
生产者在仓空时生产并通知消费者消费
消费者在仓满时取出产品并通知生产者

其实就我个人的认识与理解,生产者与消费者就是对于同一件东西或资源进行操作。生产者生成,消费者对其生成的东西进行消费

这里我给一个简单的生产消费模型:
生产者:

public class produce extends Thread{

//声明一个队列对象,用来存储
private LinkedList list ;
int count =0 ;
/**
*构造器
*
*/
public produce(LinkedList list){
this.list = list ;
}


/**
*重写run方法
*/
public void run(){
while(true){
try {
Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();
}
synchronized(list){

while(list.size()==0){
//生产产品
Box box = new Box();
box.id = ++count;
box.name = "app"+box.id;
list.add(box);

list.notify();
}
while(list.size()>0){
try {
list.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}



}

}
}



}


消费者:

public class customer extends Thread{
//声明一个队列来存储
private LinkedList list ;


/**
* 构造方法
*/

public customer(LinkedList list){

this.list = list ;

}
public void run(){

while(true){
synchronized (list) {

//判断队列是否为空
while(list.size()==0){
try {
list.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
while(list.size()>0){

System.out.println("消费者拿走了产品!"+ list.getFirst().toString() );
list.remove();
list.notify();

}



}
}
}
}


我在这只写了一个最简单的模型,生产者在队列为空时生产,不为空时则等待;消费者在队列为空时等待,在队列不为空时的消费。
生产者与消费者模型,我觉得用双缓冲对列实现更为灵活。这里实现双缓冲与线程同步有关,线程同步我会在以后再说的。线程同步的关键字啊:synchronized 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值