- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
生產者消费者问题程序示例
生产者消费者问题程序示例制作:PrinceJie本程序由JAVA语言制作,能够基本实现生产者消费者问题的演示。本程序的工作原理:生产者和消费者分别设定为3个。生产者和消费者公用产品缓冲区。当生产者生产一件产品,则该产品进入缓冲区队列;当消费者消费一件产品,则该产品离开缓冲区队列。缓冲区队列设定为5个,假若生产者生产了5件产品,若又有生产者生产了一件产品,则无法进入缓冲区。这样的话,生产者进入生产者阻塞队列,并且相应的生产者的按钮变为不可用,即不可再生产。用以表示进程的阻塞态。若此时消费者消费了一件产品,则生产者阻塞队列中的产品可以进入产品缓冲区队列,这样的话,刚才被阻塞的生产者进程被唤醒,在本程序中表现为:该生产者按钮变为可用。以下是改程序的框架示例: 具体实现方法见源程序。以下是程序的源代码:/* * Code By PriceJie, All Rights Reserved. * Code Version 1.0 * Finished Date 2011/10/21 * QQ: 1013406824 * JDK Version:1.6.0 * 本程序系生产者消费者问题的程序示例,可基本实现对该问题的描述。 * 由于程序的代码量和功能量都较少,易于测试,可以保证无BUG。 * 在NetBeans以及Eclipse环境下均运行通过。 * 本代码作者学习JAVA时日不长,算法并不健全,多处方法实现较为复杂,并不合理。 * 望各位高手指正。 * */import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.border.*;import java.util.LinkedList;/* * 程序的主类,继承JFrame类,实现ActionListener端口。 * 由于示例较简单,本程序仅设定了一个类,也就是此主类。 */public class TheMainFrame extends JFrame implements ActionListener{/* * 此处设定各种全局变量 */JButton producer1,producer2,producer3,consumer1,consumer2,consumer3;JMenuBar bar;//定义菜单栏JMenu information;//菜单分别是选项、提示JMenuItem instruction,copyright;JTextField hintMessage;LinkedListJButton blockProducerList=new LinkedListJButton();LinkedListJButton blockCacheList=new LinkedListJButton();LinkedListJButton blockConsumerList=new LinkedListJButton();//以下定义三个JPanel对象,对象添加Button键来表示生产者和消费者的各种状态JPanel blockCacheButtonList=new JPanel(new GridLayout(5,1));JPanel blockProducerButtonList=new JPanel(new GridLayout(3,1));JPanel blockConsumerButtonList=new JPanel(new GridLayout(3,1));/* * 主构造方法,继承JFrame类,实现主窗口的创建 */public TheMainFrame(){JPanel MainPanel=new JPanel();//设定主容器,此容器存放主要的控件bar=new JMenuBar();//菜单栏information=new JMenu(Help);instruction=new JMenuItem(说明);copyright=new JMenuItem(版权);setJMenuBar(bar);bar.add(information);information.add(instruction);information.add(copyright);//设置监听器instruction.addActionListener(this);copyright.addActionListener(this);//p2容器用于存放消费者按钮JPanel consumer=new JPanel(new FlowLayout(FlowLayout.RIGHT));consu
文档评论(0)