首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

生产者与消费者 模型了解,与简单设计

2013-10-22 
生产者与消费者 模型理解,与简单设计?2、变化? ? ? 虽然整个图形很简单,但是变化的情况是很多的,我们大概罗

生产者与消费者 模型理解,与简单设计

?

2、变化

? ? ? 虽然整个图形很简单,但是变化的情况是很多的,我们大概罗列一下:

? ? ? a.生产者 产品还没生产出来,仓库是空了,消费者就无法消费,如何处理?

? ? ? b.生产者 产品生产过多,消费者来不及消费,仓库放不下,如何处理?

? ? ? c.存在多个消费者,看上了仓库中同一个产品,如何处理?


生产者与消费者 模型了解,与简单设计
?

3.程序设计

? ? 下面我们模拟整个操作,来用代码实现,看看效果呢。

? ? 3.1 我们先将主体设计出来,肯定有 生产者 ,仓库,消费者 3个对象。

? ?

?

?3.3 为了模拟整个操作,对 生产 ?超市进货 卖出 ?等,进行了线程管理

? ??

package com;public class Test {/** * @param args */public static void main(String[] args) {// 生产者   超市  顾客,先让他们存在Thread producter = new Thread(new ProducerThread());Thread marketAdd = new Thread(new SuperMarketAddThread());Thread marketSend = new Thread(new SuperMarketSendThread());// 顾客的的行为,我在SuperMarketSendThread 维护了// Thread customer = new Thread();        // 为了初始化,我先假设 生产者 已经生产了  50 产品// 超市里面 已经进货了 10个产品,不至于为空ShareObject.producer.setCount(50);ShareObject.market.addProducts(10);// 1. 逻辑上 我们应该先让生产者执行晒,毕竟要先生产产品嘛producter.start();// 2.然后是超市 marketAdd.start();// 3.然后才是消费者 来消费marketSend.start();// 虽然这么些,其实执行顺序是随机的。要加入队列才行,留在后面吧                // 上面数量 ,可以将顾客买的数量随机数 改大,容易出现负数                }}

?

小结:

? ? ? ?1.上面是模拟了生产者消费者模型的实现,我们把 生产者,超市唯一化了。而实际情况要复杂很多。上面程序是有BUG的,因为没有考虑各种限制,2.变化 所列出的,都没考虑进去,留在后面进行了。

? ? ? ?2.整个程序设计是很初步的,有兴趣的童鞋,可以自己完善,后面我也会将常用的设计模式 融入进去,包括一个宏观设计,更加抽象,体验设计带来的乐趣。

? ? ? ?3.有啥批评建议的,尽管说,我脸皮厚,最喜欢大家的各种抨击,才能学习成长!

热点排行