A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© suiabing 中级黑马   /  2012-4-26 10:42  /  1648 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于多生产多消费这个问题,假如我们在中间夹了一个运输者,也就是说,
Producer类生产,里面它的pro_num记录 记录生产的烤鸭数量,
Transit类运输,负责从Producer那里运输烤鸭,并且有tran_num,来记录运输过来的烤鸭数量,运输来一个自己就加一个,而Producer的pro_num就减去一个。
最后来了一个Consumer类,来负责从Transi那里消费烤鸭,消费一个Transit就减一个,自己con_num就加一个,注意con_num是一直加的。
怎么做呢?同步?定义资源类?等待唤醒?同步锁?
只求思路,不求代码。

1 个回复

正序浏览
程序中存在三个类,分别为:Producer,Transit,Consumer ,其中Transit作为容器,且作为Producer和Consumer的成员属性,
先实例化Transit类一个对象tran
然后new Producer和Consumer, pro和con 对象,并以均以tran作为参数传入,分别启动pro和con内的进程(主要为了更贴近实际,譬如:pro为秒钟生产一只烤鸭,而消费者每三秒消费一只烤鸭(可以多个消费者,这里举一个作为样例))进行生产(只负责定时生产并交付给tran对象,若烤鸭数量为0则唤醒等待的线程)和消费(可以任意时候消费,询问tran对象,若有则进行消费,无则进入等待状态(睡眠)),
由于这个事件pro和con之间属于同步,不需要对tran进行互斥访问控制
而消费者之间属于互斥关系,需要对tran的访问进行互斥控制,防止错误
初步想法,有疑问继续交流噢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马