创建工厂类,
属性包括:车间类的对象的集合,仓库容量
方法包括:
1. 加工玩具的方法(product),方法的功能是各个车间同时工作。根据仓库容量平均分配给各个车间需要加工玩具的数量。
2. 建造玩具车间的方法(createWorkshop),方法功能是模拟建造玩具生成车间,即向集合属性中添加一个新车间。
创建车间类:
属性包括:车间名称
要求:
1. 使用多线程模拟加工玩具的功能,假设每隔2秒可完成一个玩具的加工,每个车间完成一个玩具的加工后,打印当前已加工玩具数量(给每个线程设置名称为车间的名称)
2. 创建测试类,模拟工厂加工玩具的功能。
提示:车间集合的容量即是线程的数量
//日常练习,如有问题,欢迎指出
//工厂类
package com.javawork1.spx;
import java.util.ArrayList;
public class Factory implements Runnable{
private int Tonum;
private int num;
private int rem;
private ArrayList<Workshop>workshop;
public Factory(int Fnum) {
workshop=new ArrayList<Workshop>();
this.Tonum=Fnum;
}
public void product() {
num =(int) Math.floor(Tonum/(double)workshop.size());
rem=Tonum%workshop.size();
System.out.println("将玩具总量平均分配给各个生产车间后,还剩余"+rem+"件");
}
public void createWorkshop(Workshop name) {
workshop.add(name);
}
public void run() {
product();
for(int i =1;i<=num;i++) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"到目前为止一共生产了" + i + "个玩具");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
if(i==num) {
System.out.println(Thread.currentThread().getName()+"生产完毕 ,"+ Thread.currentThread().getName()+"一共生产了"+ i + "个玩具");
}
}
}
}
//车间类
package com.javawork1.spx;
public class Workshop {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Workshop() {
}
public Workshop(String name) {
this.setName(name);
}
}
//测试类
package com.javawork1.spx;
public class Test {
public static void main(String [] args) {
Factory factory=new Factory(22);
Thread thread1=new Thread(factory);
thread1.setName("车间一");
Workshop workshop1 = new Workshop();
workshop1.setName("车间一");
factory.createWorkshop(workshop1);
thread1.start();
Thread thread2=new Thread(factory);
thread2.setName("车间二");
Workshop workshop2 = new Workshop();
workshop2.setName("车间二");
factory.createWorkshop(workshop2);
thread2.start();
Thread thread3=new Thread(factory);
thread3.setName("车间三");
Workshop workshop3 = new Workshop();
workshop3.setName("车间三");
factory.createWorkshop(workshop3);
thread3.start();
Thread thread4=new Thread(factory);
thread4.setName("车间四");
Workshop workshop4 = new Workshop();
workshop4.setName("车间四");
factory.createWorkshop(workshop4);
thread4.start();
Thread thread5=new Thread(factory);
thread5.setName("车间五");
Workshop workshop5 = new Workshop();
workshop5.setName("车间五");
factory.createWorkshop(workshop5);
thread5.start();
}
}