题目描述:
乌龟和兔子进行1000米赛跑,兔子前进5米,乌龟只能前进1米,但兔子每20米要休息500毫秒,而乌龟是每100米休息500毫秒,谁先到终点就结束程序,并显示获胜者。
代码实现:
package com.yrf.myjava.ch01;
import java.lang.Thread;
import java.lang.Runnable;
class Rabbit implements Runnable{
private String name;
static int rabbit_walk=0; //兔子跑过的距离
public Rabbit(String name) {
this.name=name;
}
public String getName(){
return this.name;
}
public synchronized void run() {
System.out.println("兔子开始跑了...");
for(int i=0;i<=1000;i+=5) {
System.out.println(this.getName()+"跑了"+i+"米");
if(i%20==0) {
try {
Thread.sleep(500);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
rabbit_walk+=5;
if(Tortoise.tortoise_walk==1000)
break;
if(i==1000) {
System.out.println(this.getName()+"跑完了全程");
System.out.println("胜利者是"+this.getName());
}
}
return;
}
}
class Tortoise implements Runnable{
private String name;
static int tortoise_walk=0; //乌龟跑过的距离
public Tortoise(String name) {
this.name=name;
}
public String getName() {
return this.name;
}
public synchronized void run() throws NullPointerException{
System.out.println("乌龟开始跑了...");
for(int i=0;i<=1000;i++) {
System.out.println(this.getName()+"跑了"+i+"米");
if(i%100==0) {
try {
Thread.sleep(500);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
Tortoise.tortoise_walk+=1;
if(Rabbit.rabbit_walk==1000)
break;
if(i==1000) {
System.out.println(this.getName()+"跑完了全程");
System.out.println("胜利者是"+this.getName());
}
}
return;
}
}
public class Runtest{
public static void main(String[] args) {
Thread t1=new Thread(new Rabbit("兔子"));
Thread t2=new Thread(new Tortoise("乌龟"));
t1.start();
t2.start();
}
}