Java多线程模拟加工厂加工玩具

创建工厂类,

属性包括:车间类的对象的集合,仓库容量

方法包括:

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();
		
	}
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值