题目详情
龟兔赛跑的故事大家都听过,请采用线程的知识,编写代码作比较。
具体要求如下:
1、乌龟和兔子各自一个线程。
2、乌龟每步跑1厘米,兔子每步跳100厘米。
3、兔子每跑到第100步的时候,会休息0.001秒;
4、问:50000厘米比赛谁获胜?
题目分析
这套题考查的是多线程的知识,包括线程创建,线程睡眠等。这道题目貌似是迅雷校园招聘的机试题。创建两个线程,分别是乌龟线程(TortoiseThread)和兔子(RabitThread)线程,计算跑50000 cm用的时间长度。
类设计和实现
RabitThread.java类
package com.mashen.tortoise;
public class RabitThread extends Thread {
int distance;
public RabitThread(String name,int distance) {
super(name);
this.distance=distance;
}
@Override
public void run() {
long startTime=System.currentTimeMillis();
int i=1;
while (i<=distance) {
try {
//每经过100步再休息一小会
if(distance%100==0){
Thread.sleep(1);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
//步长是100cm
i=i+100;
}
long endTime=System.currentTimeMillis();
System.out.println(getName()+"奔跑"+distance+"cm共耗时:"+(endTime-startTime)+"毫秒");
}
}
TortoiseThread.java类
package com.mashen.tortoise;
public class TortoiseThread extends Thread {
int distance;
public TortoiseThread(String name,int distance) {
super(name);
this.distance=distance;
}
@Override
public void run() {
long startTime=System.currentTimeMillis();
int i=1;
while (i<=distance) {
i++;
}
long endTime=System.currentTimeMillis();
System.out.println(getName()+"奔跑"+distance+"cm共耗时:"+(endTime-startTime)+"毫秒");
}
}
用于测试的类RunTest.java
package com.mashen.tortoise;
public class RunTest {
public static void main(String[] args) {
int distance=50000;
RabitThread bt=new RabitThread("小兔子",distance);
TortoiseThread tt=new TortoiseThread("小乌龟", distance);
bt.start();
tt.start();
}
}
运行结果如下:
龟兔赛跑的问题大家都耳熟能详了,小兔子因为骄傲而输掉了比赛,小乌龟因为坚持不懈而夺得了胜利。我们学习也是这样,现在困难重重,时间也不好安排,哪怕每天抽出一丁点时间来写写代码,十行,二十行都行,坚持下来,日后会豁然开朗。只有坚持不懈才能最后走向成功!共勉!工作生活亦如此!