题目:
- 龟兔赛跑程序,设赛跑长度为30米
- 兔子的速度 10米每秒, 兔子每跑完10米休眠10秒
- 乌龟的速度 1米每秒, 乌龟每跑完10米休眠1秒
- 要求:等兔子和乌龟的线程结束时,公布结果
- 提示:使用System.currentTimeMillis()
兔子类:
public class TuZi extends Thread{
private long time;
@Override
public void run(){
long start = System.currentTimeMillis();
for(int i = 1;i <= 30;i ++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(getName() + "跑了" + i + "米");
if(i == 10 || i == 20){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
long end = System.currentTimeMillis();
this.time = end - start;
}
public TuZi(String name) {
super(name);
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
}
乌龟类:
public class WuGui extends Thread{
private long time;
@Override
public void run(){
long start = System.currentTimeMillis();
for(int i = 1;i <= 30;i ++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(getName() + "跑了" + i + "米");
if(i == 10 || i == 20){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
long end = System.currentTimeMillis();
this.time = (end - start);
}
public WuGui(String name) {
super(name);
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
}
测试类:
package com.company.thread;
public class TestSaiPao {
public static void main(String[] args){
WuGui wg = new WuGui("乌龟");
TuZi tz = new TuZi("兔子");
wg.start();
tz.start();
try {
wg.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
tz.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(wg.getTime() < tz.getTime()){
System.out.println("乌龟赢!");
}else if(wg.getTime() > tz.getTime()){
System.out.println("兔子赢!");
}else {
System.out.println("平局!");
}
}
}