- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java网络编程生产者消费者问题
网络编程实验报告
实验题目:生产者/消费者问题
姓 名: 蔡锋
学 号: 0907300230
班 级:信息安全091班
完成时间: 2011.10.25—2011.11.05
指导老师: 张小萍
一、实验概述
1.1 实验目的
了解进程的同步、互斥机制,认识理解其过程,并用于解决生产者/消费者问题。
使用编程实现“生产者——消费者”同步问题consumer
2.一个仓库(缓冲区),最大存量为两个产品
2.1 功能及模块设计
2.2特别功能
1. Thread.sleep((int)(Math.random()方法令线程随机发生。
2. 用synchronized来实现同步 用synchronized来实现同步 定义一个新线程必须重写父类的run方法
三、源代码及方法解释(重点步骤已用红色注释)
本次方法中未用到队列,利用的是多次调用线程,逐一实现先来先服务
import java.util.*;
public class xiancheng
{
public static void main(String[] args)
{
StoreHouse storeHouse = new StoreHouse();
Producer producer1 = new Producer(生产者A, storeHouse);
Producer producer2 = new Producer(生产者B, storeHouse);
Consumer comsumer = new Consumer(消费者, storeHouse);
Thread t0 = new Thread(producer1);
Thread t1 = new Thread(producer2);
Thread t2 = new Thread(comsumer);
t0.start();
t1.start();
t2.start();
}
}
class Producer extends Thread implements Runnable //定义生产者线程
{
private String producerName = null;
private StoreHouse storeHouse = null;
public Producer(String producerName, StoreHouse storeHouse)
{
this.producerName = producerName;
this.storeHouse = storeHouse;
} //声明生产者要放产品的仓库
public void setProducerName(String producerName)
{
this.producerName = producerName;
}
public String getProducerName()
{
return producerName;
}
public void run()//定义一个新线程必须重写父类的run方法
{
while (true)
{
storeHouse.store_in(this);
try
{
Thread.sleep((int)(Math.random() * ));
}//定义线程休眠时间
catch (InterruptedException e)
{
return;
}//有可能抛出异常,必须对它进行捕捉
}
}
}
class Consumer extends Thread implements Runnable
{
public String consumerName = null;
public StoreHouse storeHouse = null;
public Consumer(String consumerName, StoreHouse storeHouse)
{
this.consumerName = consumerName;
this.storeHouse = storeHouse;
}
public void setConsumerName(String consumerName)
{
this.consumerName = consumerName;
}
public String getConsumerName()
{
re
文档评论(0)