资源简介
CD租售店
请实现一个CD出租销售店的模拟程序,该CD租售店,具有可租cd列表,可售cd列表。并具有租、还cd,销售、进货CD方法。假设cd店中可租CD列表5张,可售CD列表5种,每种10张,请实现以下线程
进货线程:只有一个,固定的每1秒启动一次,但是如果临时缺货则购买线程发送消息紧急启动一次,每次补齐可售CD列表。
销售线程:可以有两个或两个以上,启动的时间为500ms以内的随机数。购买数量为5以内的随机数。如果cd数量不足则随机选择等候或放弃。
租借线程:租借CD店的可租借CD,启动时间为300ms以内的随机数。租借序号为1-5随机序号的CD,如果该CD已经出租则随机选择等候或者放弃。如果可以借到CD则随机等候200~300ms然后归还。
程序运行2分钟以后停止。最后列出购买、进货、租借还的纪录(时间及行为)。
程序运行两次,以record.txt方式提交两次的程序输出。
提交源程序。
代码片段和文件信息
package lab4;
import java.util.ArrayList;
import java.util.Date;
import java.util.Random;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
class SaleCD
{
int cdid;
String name;
int count;
public SaleCD(int cdid String name int count) {
super();
this.cdid = cdid;
this.name = name;
this.count = count;
}
}
class RentCD
{
int cdid;
String name;
boolean isRent;
public RentCD(int cdid String name boolean isRent) {
super();
this.cdid = cdid;
this.name = name;
this.isRent = false;
}
}
class InputThread extends Thread{
ArrayList SaleList;
MyCDshop cdshop;
public InputThread(MyCDshop cdshop){
super();
this.cdshop = cdshop;
}
}
class SaleThread extends Thread
{
ArrayList SaleList;
MyCDshop cdshop;
public SaleThread(MyCDshop cdshop) {
super();
this.cdshop = cdshop;
}
@Override
public void run() {
while(true)
{
try {
sleep((int)(Math.random()*500));
} catch (InterruptedException e) {
e.printStackTrace();
}
int cdid=(int)(Math.random()*5)+1;
int cdcount=(int)(Math.random()*5)+1;
synchronized (cdshop.SaleList) {
if (cdshop.saleCD(cdid cdcount)) {
System.out.println(new Date()+“成功销售“ + cdid + “数量“ + cdcount);
} else {
Random r = new Random();
if (r.nextBoolean()) {
System.out.println(new Date()+“数量不足,等候“);
cdshop.SaleList.notify();
do
{
try {
cdshop.SaleList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while(!cdshop.saleCD(cdid cdcount));
System.out.println(new Date()+“等候以后“+“成功销售“ + cdid + “数量“ + cdcount);
}
else
{
System.out.println(new Date()+“放弃销售“);
cdshop.SaleList.notify();
}
}
}
}
}
}
class RentThread extends Thread
{
MyCDshop cdshop;
public RentThread(MyCDshop cdshop) {
super();
this.cdshop = cdshop;
}
@Override
public void run() {
while(true)
{
try {
sleep((int)(Math.random()*300));
} catch (InterruptedException e) {
e.printStackTrace();
}
int cdid=(int)(Math.random()*5+1);
int times=(int)(Math.random()*100)+200;
synchronized (cdshop.RentList) {
if (cdshop.rentCD(cdid-1)) {
System.out.println(new Date()+“成功租到“ + “编号“+ cdid );
try{
Thread.sleep(times);
}catch(InterruptedException e) {
e.printStackTrace();
}
cdshop.backCD(cdid);
System.out.println(new Date()+“归还“ +cdid);
}
else {
Random r = new Random();
if (r.nextBoolean()) {
System.out.println(new Date()+“已租出,等候“);
cdshop.RentList.notify();
do
{
try {
cdshop.RentList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while(cdshop.rentCD(cdid-1));
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-12-22 19:47 Cd\
文件 301 2015-12-06 10:30 Cd\.classpath
文件 378 2015-12-06 10:30 Cd\.project
目录 0 2015-12-22 19:45 Cd\.settings\
文件 598 2015-12-06 10:30 Cd\.settings\org.eclipse.jdt.core.prefs
目录 0 2015-12-22 19:45 Cd\bin\
目录 0 2015-12-22 19:45 Cd\bin\lab4\
文件 811 2015-12-22 19:36 Cd\bin\lab4\ControlThread.class
文件 1299 2015-12-22 19:36 Cd\bin\lab4\GetInThread.class
文件 456 2015-12-22 19:36 Cd\bin\lab4\InputThread.class
文件 3183 2015-12-22 19:36 Cd\bin\lab4\MyCDshop.class
文件 448 2015-12-22 19:36 Cd\bin\lab4\RentCD.class
文件 2184 2015-12-22 19:36 Cd\bin\lab4\RentThread.class
文件 443 2015-12-22 19:36 Cd\bin\lab4\SaleCD.class
文件 1992 2015-12-22 19:36 Cd\bin\lab4\SaleThread.class
文件 6907 2015-12-22 19:33 Cd\record.txt
目录 0 2015-12-22 19:45 Cd\src\
目录 0 2015-12-22 19:45 Cd\src\lab4\
文件 6427 2015-12-22 19:36 Cd\src\lab4\MyCDshop.java
文件 23872 2016-11-25 16:16 CD租售店.docx
- 上一篇:Java 动态规划求解TSP问题
- 下一篇:JAVA-画笔小程序
相关资源
- mysql数据处理,java用户登录处理
- 法律咨询信息系统(java+jsp+sqlserver)
- Java快速开发平台源码(renren-fast)
- 锐聘学院QST青软JavaWeb十二个打包
- 3.3.6微信支付JAVA版demo
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 简单多线程一对一聊天程序
- 基于JAVA_JSP电子书系统(源码+数据库
- Java网络编程知识点总结.xmind
- 一站式Java网络编程 BIO-NIO-AIO资料源码
- jsp讲解
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- Java 仿QQ(附客户端以及服务端源码)
- Java TCP IP Socket
- java定时发送邮件(基于quartz)
- Java Swing开发的《星际争霸》游戏
- java+数据库商品交易管理系统(附数据
- 使用java语言编译一个计算器
- java swing工资管理系统(源码+数据库
- JAVALibrary
- 微信企业号回调模式Java版
- 顺丰丰桥接口开发详细教程源码含下
- Java博客概要设计文档
- 药品进销存管理系统(论文范文_JSP
- 奖学金管理系统java+jsp+mysql
- 毕设参考——基于java酒店管理
- Java写的一个简单的字体更改程序
评论
共有 条评论