1 生产速度远大于消费速度,生产过剩,反之类似
2 生产者停止了生产,但消费者还在无限循环缓存集合中的产品(即,集合为空),消耗资源
针对以上两个问题,希望有高手给出些处理经验或者建议,谢谢!
------解决思路----------------------
设置缓冲区大小上限,并通过wait、notify机制控制
如果生产过剩,导致缓冲区满了,则生产停止,当缓冲区达到一个下限(不一定设置为0,也可以设置成一个正数)则唤醒生产者。
如果没有产品提供消费了,则消费者停止,当生产者生产了之后,则唤醒消费者。
这就像工厂里面的生产部门和销售部门,当生产过剩了,仓库都放不下了,则应该停止生产,当仓库消费到一定程度(如:库存已经只够填充20%的仓库),重新开始生产。
当销售部门销售的太快,库存已经没有货了,则可以让销售员在家里歇几天,不要出去跑了,等有库存了,则通知销售员出去卖货。
------解决思路----------------------
你可以用阻塞有界队列呀
------解决思路----------------------
synchronized produce(){
while(生产过剩){
this.wait();
}
this.notify();
继续生产;
}
synchronize consume(){
while(供给不足){
this.wait();
}
this.notify();
继续消费;
}