兔子不睡觉
public class Main {
public static void main(String[] args) {
Animal rabbit = new Animal("兔子", 20);
Animal turtle = new Animal("乌龟", 10);
rabbit.start();
turtle.start();
}
}
class Animal extends Thread {
private String name; // 名称
private int speed; // 速度
private final int distance = 100; // 百米赛跑
public Animal(String name, int speed) {
this.name = name;
this.speed = speed;
this.setName(name); // 设置线程名称
}
@Override
public void run() {
for (int i = 0; i < distance; ) {
i += speed;
System.out.println(Thread.currentThread().getName() + " 跑到了 " + i + " 米");
try {
Thread.sleep(300); // 设置300ms延迟方便观察
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Output
兔子 跑到了 20 米
乌龟 跑到了 10 米
兔子 跑到了 40 米
乌龟 跑到了 20 米
乌龟 跑到了 30 米
兔子 跑到了 60 米
乌龟 跑到了 40 米
兔子 跑到了 80 米
乌龟 跑到了 50 米
兔子 跑到了 100 米
乌龟 跑到了 60 米
乌龟 跑到了 70 米
乌龟 跑到了 80 米
乌龟 跑到了 90 米
乌龟 跑到了 100 米
兔子睡觉
兔子跑到80米后睡觉了。
public class Main {
public static void main(String[] args) {
Animal rabbit = new Animal("兔子", 20);
Animal turtle = new Animal("乌龟", 10);
rabbit.start();
turtle.start();
}
}
class Animal extends Thread {
private String name; // 名称
private int speed; // 速度
private final int distance = 100; // 百米赛跑
public Animal(String name, int speed) {
this.name = name;
this.speed = speed;
this.setName(name); // 设置线程名称
}
@Override
public void run() {
for (int i = 0; i < distance; ) {
try {
if ("兔子".equals(name) && i == 80)
Thread.sleep(3000); // 兔子开始睡觉
i += speed;
System.out.println(Thread.currentThread().getName() + " 跑到了 " + i + " 米");
Thread.sleep(300); // 设置300ms延迟方便观察
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Output
兔子 跑到了 20 米
乌龟 跑到了 10 米
乌龟 跑到了 20 米
兔子 跑到了 40 米
兔子 跑到了 60 米
乌龟 跑到了 30 米
乌龟 跑到了 40 米
兔子 跑到了 80 米
乌龟 跑到了 50 米
乌龟 跑到了 60 米
乌龟 跑到了 70 米
乌龟 跑到了 80 米
乌龟 跑到了 90 米
乌龟 跑到了 100 米
兔子 跑到了 100 米