龟兔赛跑问题:
赛道总长20米,兔子每秒0.5米,每两秒休息10秒,乌龟每秒0.1米,不休息。
要求:
使用多线程模拟龟兔赛跑,谁先跑完20米谁获胜,则另一个停止赛跑。
public class Test2 {
public static void main(String[] args) {
Thread r = new Thread(new R());
Thread t = new Thread(new T());
r.start();
t.start();
}
}
class Animal {
public static final double jl = 20; //赛道长度
public static double rJL = 20; //兔子前进距离
public static double tJL = 20; //乌龟前进距离
}
//兔子
class R extends Thread {
@Override
public void run() {
for (double i=0;i<=20;i=i+0.5) {
try {
if (Animal.tJL<=0) {
System.out.println("乌龟获胜!");
break;
}
System.out.println("兔子跑了"+i+"米,距离终点"+(int)(Animal.jl-i));
sleep(1000);
if (i%2==0 && i!=0 && i!=20) {
System.out.println("兔子开始休息!");
sleep(10000);
}
Animal.rJL = Animal.rJL-0.5;
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
//乌龟
class T extends Thread {
@Override
public void run() {
for (double i=0;i<=20;i=i+0.1) {
try {
if (Animal.rJL<=0) {
System.out.println("兔子获胜!");
break;
}
System.out.println("乌龟跑了:"+i+"米,距离终点"+(int)(Animal.jl-i));
sleep(1000);
Animal.tJL = Animal.tJL-0.1;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}