【介绍】
1.任务描述
在某个工地,需要把100块砖搬运到二楼,现在有工人张三和李四,张三每次搬运3块砖,每趟需要10分钟,李四每次搬运5块砖,每趟需要12分钟。
要求:编写程序分别计算两位工人搬完100块砖需要多长时间。要求使用多线程的方式实现。
2.运行结果
【思路】
(1) 查看运行结果分析后,需要定义一个搬砖用时的全局变量。还需要定义两个方法分别计算张三和李四搬100块砖所用的时间。
(2) 重写run()方法,在run()方法中使用if判断调用计算张三搬砖所用时间的方法还是计算李四搬砖所用时间的方法。
(3) 在测试类的main方法中创建并开启线程“张三”和“李四”。
【代码】
package chapter;
class Bricks implements Runnable {
private int time = 0;
public void run(){
if (Thread.currentThread().getName().equals("张三")){
zsmovebrick(); //计算张三搬砖所用时间的方法
}else if(Thread.currentThread().getName().equals("李四")){
lsmovebrick(); //计算李四搬砖所用时间的方法
}
}
private synchronized void zsmovebrick(){
time=(int)Math.ceil((double)100/(double)3)*10;
System.out.println(Thread.currentThread().getName()+"搬完100块砖需 要"+time+"分钟");
}
private synchronized void lsmovebrick(){
time= 100/5*12;
System.out.println(Thread.currentThread().getName()+"搬完100块砖需 要"+time+"分钟");
}
}
public class MoveBricks{
public static void main(String[] args){
Bricks bricks = new Bricks();
new Thread(bricks,"张三").start();
new Thread(bricks,"李四").start();
}
}