Java龟兔赛跑

兔子不睡觉

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 米



上一篇:2021-09-25


下一篇:STM32库函数是什么意思呢?和寄存器有什么联系呢(下)?