模拟工厂加工玩具
创建工厂类,
属性包括:车间类的对象的集合,仓库容量
方法包括:
1. 加工玩具的方法(product),方法的功能是各个车间同时工作。根据仓库容量平均分配给各个车间需要加工玩具的数量。
2. 建造玩具车间的方法(createWorkshop),方法功能是模拟建造玩具生成车间,即向集合属性中添加一个新车间。
创建车间类:
属性包括:车间名称
要求:
- 使用多线程模拟加工玩具的功能,假设每隔2秒可完成一个玩具的加工,每个车间完成一个玩具的加工后,打印当前已加工玩具数量(给每个线程设置名称为车间的名称)
- 创建测试类,模拟工厂加工玩具的功能。
提示:车间集合的容量即是线程的数量
//工厂类
package homework1;
import java.util.ArrayList;
import java.util.List;
//import java.awt.List;
public class Factory {
private int capacity;
private List<WorkPlace> workplaces;
public Factory(int capacity) {
this.capacity=capacity;
workplaces = new ArrayList<>();
}
public void productToy() {
//加工玩具的方法
//计算每个工厂加工的玩具
int sum = Math.abs(capacity/workplaces.size());
for(WorkPlace place : workplaces) {
ProductToysThread thread = new ProductToysThread(sum,place.getName());
thread.start();
}
}
public void createWorkPlace(String workplaceName) {
WorkPlace placeName = new WorkPlace(workplaceName);
workplaces.add(placeName);
System.out.println(workplaceName+"车间建造完成啦~");
}
}
//车间类
package homework1;
public class WorkPlace {
private String name;
public WorkPlace(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "WorkPlace [name = "+name+"]";
}
}
//线程类
package homework1;
public class ProductToysThread extends Thread {
private int sum;
private String name;
public ProductToysThread(int sum,String name) {
this.sum = sum;
this.name = name;
}
public void run() {
this.setName(name);
for(int i = 1; i< sum; i++) {
System.out.println("车间"+this.getName()+"已经加工的玩具数量:"+i);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(this.getName()+"加工完毕");
}
}
//测试类
package homework1;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Factory factory = new Factory(40);
factory.createWorkPlace("1车间:");
factory.createWorkPlace("2车间:");
factory.createWorkPlace("3车间:");
factory.createWorkPlace("4车间:");
factory.productToy();
}
}