当前位置: 代码迷 >> Java Web开发 >> 生产者消费者形式应用
  详细解决方案

生产者消费者形式应用

热度:168   发布时间:2016-04-16 21:42:22.0
生产者消费者模式应用
1 生产速度远大于消费速度,生产过剩,反之类似

2 生产者停止了生产,但消费者还在无限循环缓存集合中的产品(即,集合为空),消耗资源

针对以上两个问题,希望有高手给出些处理经验或者建议,谢谢!


------解决思路----------------------
设置缓冲区大小上限,并通过wait、notify机制控制

如果生产过剩,导致缓冲区满了,则生产停止,当缓冲区达到一个下限(不一定设置为0,也可以设置成一个正数)则唤醒生产者。

如果没有产品提供消费了,则消费者停止,当生产者生产了之后,则唤醒消费者。

这就像工厂里面的生产部门和销售部门,当生产过剩了,仓库都放不下了,则应该停止生产,当仓库消费到一定程度(如:库存已经只够填充20%的仓库),重新开始生产。
当销售部门销售的太快,库存已经没有货了,则可以让销售员在家里歇几天,不要出去跑了,等有库存了,则通知销售员出去卖货。
------解决思路----------------------
你可以用阻塞有界队列呀
------解决思路----------------------
synchronized produce(){
   while(生产过剩){
      this.wait();
   }
   this.notify();
   继续生产;
}

synchronize consume(){
    while(供给不足){
      this.wait();
   }
   this.notify();
   继续消费;
}
  相关解决方案