一:
创建工厂类Factory 属性:车间类WorkShop的对象的集合worShops,仓库的容量 int capability
方法:
1、加工玩具方法 product:各车间同时工作(多线程,多线程需要设置名称:车间1、车间2、车间3), 根据仓库的容量平均分配给各车间需要加工玩具的数量 12个玩具,3个车间
2、建造车间方法createWorkShop:向集合worShops添加一个新的车间
二:
车间类WorkShop 属性:车间名称
方法:车间名称的setter、getter 要求:使用多线程模拟加工玩具功能,假设2秒完成一个玩具,每个车间完成一个玩具后,打印玩具的已经完成的数量 实现测试类
package com.factoryProduce.demo;
import java.util.ArrayList;
public class Factory {
private int capability =12;//这个bug没有找出来,test类中构造传参12没有效果。
private WorkShop[] shop = new WorkShop[5];
private static ArrayList<WorkShop> shopList = new ArrayList<WorkShop>();
private int WorkShopNum = 0;
public int getWorkShopNum() {
return WorkShopNum;
}
public void setWorkShopNum(int workShopNum) {
WorkShopNum = workShopNum;
}
//给私有属性提供getter\setter方法
public int getCapability() {
return capability;
}
public WorkShop[] getShop() {
return shop;
}
public void setShop(WorkShop[] shop) {
this.shop = shop;
}
public static ArrayList<WorkShop> getShopList() {
return shopList;
}
public static void setShopList(ArrayList<WorkShop> shopList) {
Factory.shopList = shopList;
}
public void setCapability(int capability) {
this.capability = capability;
}
//构造方法
public Factory() {
}
public Factory(int capability) {
setCapability(capability);
}
//成员方法
public int count() {
int average = this.capability / this.shopList.size();
return average;
}
public void creatWorkShop(String name) {
int i = this.WorkShopNum;
//使用new处于新建状态
this.shop[i] = new WorkShop();
this.shop[i].setName(name);
shopList.add(shop[i]);
this.WorkShopNum++;
}
//factory下令workShop开始生产
public void product() {
for(int i = 0;i < WorkShopNum;i++) {
Thread shopThread =new Thread(shop[i]);
shopThread.start();
}
}
}
package com.factoryProduce.demo;
public class WorkShop extends Factory implements Runnable {
private String name;
private int produtNum = 0;
public String getName() {
return name;
}
public int getProdutNum() {
return produtNum;
}
public void setProdutNum(int produtNum) {
this.produtNum = produtNum;
}
public void setName(String name) {
this.name = name;
}
//构造方法
public WorkShop() {
}
public WorkShop(String name) {
this.name = name;
}
@Override
public void run() {
// TODO Auto-generated method stub
int j = count();
for(int i = 0;i <= count();i++) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.produtNum = i;
System.out.println(this.name+"已经生产了"+ i + "件");
if(i == count()) {
System.out.println(this.name+"生产完毕");
}
}
}
}
package com.factoryProduce.demo;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Factory toyFactory = new Factory(12);
String name1 = "车间一";
String name2 = "车间二";
String name3 = "车间三";
toyFactory.creatWorkShop(name1);
toyFactory.creatWorkShop(name2);
toyFactory.creatWorkShop(name3);
//start处于就绪状态
toyFactory.product();
}
}