使用Java中线程Thread的知识来实现龟兔赛跑
代码很简单有需要注意的地方也已经在后面标出来了:
class Animal implements Runnable {
private String name;
private int speed; // 速度
private int distance; // 跑道长度
private int sumdistance = 0; // 已跑距离
public Animal(String name, int speed, int distance) {
this.name = name;
this.speed = speed;
this.distance = distance;
public void run() { //实现Runnable中抽象的run()方法
while (sumdistance < distance) {//只要没有已跑距离没有超过路程总长,就进入循环
try {
// 休眠毫秒数是随机的(在500至1500之间)
Thread.sleep((int) (Math.random() * 1000) + 500);
} catch (Exception e) {
System.out.println(e);
}
}
sumdistance += speed; // 获得当前跑了多长距离
//sumdistance += Math.random() * speed;
System.out.println(name + " : 我已经跑了 " + sumdistance);
}
System.out.println(name + " 终于冲过终点了 ! "); // 执行本语句后线程结束
}
}
public class AnimalRace {
public static void main(String[] args) {
Animal rabbit = new Animal("兔子", 20, 50);//有参构造
Animal turtle = new Animal("乌龟", 15, 50);
new Thread(rabbit).start();//开始
new Thread(turtle).start();
}
}
总结:
这是以前在学校学过,也被老师当做考题来出的一个线程题。今天突然想起来了这个题目,就尝试着编写了一下,结果还是很好的,没有忘掉许多Thread里面的知识。
如果大家有什么问题可以提出来我们一起讨论。