public class Zuoye2 { public static void main(String[] args) { //兔子的线程 Thread rabbit = new Thread() { @Override public void run() { try { for(int i=0;i<=100;i+=5) { System.out.println("兔子跑了"+i+"米"); //只要没跑到终点,那么每秒钟跑5米 if(i!=100) { Thread.sleep(1000); } //每20米要休息2秒,开始跑和跑到终点不用休息 if(i%20==0 && i!=0 && i!=100) { Thread.sleep(2000); } } System.out.println("兔子赢得了比赛,游戏结束"); System.exit(0);//退出jvm虚拟机,谁先到达终点,比赛结束 }catch (Exception e) { e.printStackTrace(); } } }; //乌龟的线程 Thread wugui = new Thread() { @Override public void run() { for(int i=0;i<=100;i+=4) { System.out.println("乌龟跑了"+i+"米"); //每秒钟跑4米,开始跑和跑到终点了不用休息 if(i==0 || i==100) { continue; } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("乌龟赢得了比赛,游戏结束"); System.exit(0);//退出jvm虚拟机,谁先到达终点,比赛结束 } }; rabbit.start(); wugui.start(); } }
上述是第一种方法
一下为第二种方法
public static void main(String[] args) {
// 创建乌龟和兔子线程
Tur tur = new Tur();
Rabbit rabbit = new Rabbit();
tur.setName("乌龟");
rabbit.setName("小白兔");
// 开始赛跑
rabbit.setDaemon(true);// 守护线程
tur.start();
rabbit.start();
}
}
class Tur extends Thread {
public Tur() {
super();
}
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
// 乌龟4米 每秒 1米是 0.25秒
try {
Thread.sleep(250);// 相当于休息0.25s
} catch (InterruptedException e) {
e.printStackTrace();
}
// 每次跑了一米都打印
System.out.println(Thread.currentThread().getName() + "跑了" + i + "米");
if(i==100) {
System.out.println("乌龟获得胜利");
}
}
}
}
//兔子
class Rabbit extends Thread {
public Rabbit() {
super();
}
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
// 兔子5米 每秒 1米是 0.2秒
try {
Thread.sleep(200);// 相当于休息0.2s
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "跑了" + i + "米");
if(i==100) {
System.out.println("小白兔获得胜利");
}
if (i % 20 == 0 && i != 100) {
// 跑完20米
try {
Thread.sleep(2000); // 兔子每跑完20米休息的时间2秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}