多线程之龟兔赛跑

多线程之龟兔赛跑

从简单的例子来看,多线程的数据的线程不安全问题还是比较严重

直接上代码

package com.example.multi_thread;

public class Race implements Runnable {

    private String winner;

    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            if (Thread.currentThread().getName() == "兔子" && i % 10 == 0) {
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            boolean flag = isGameOver(i);
            System.out.println(Thread.currentThread().getName() + "跑了第" + i + "步");
            if (flag) {
                System.out.println(Thread.currentThread().getName() + "win");
                break;
            }
        }
        winner = Thread.currentThread().getName();

    }

    public boolean isGameOver(int step) {
        if (winner != null) {
            return true;
        }
        if (step == 100) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        Race race = new Race();
        new Thread(race, "兔子").start();
        new Thread(race, "乌龟").start();
    }
}

结果

乌龟跑了第0步
乌龟跑了第1步
乌龟跑了第2步
乌龟跑了第3步
乌龟跑了第4步
乌龟跑了第5步
乌龟跑了第6步
乌龟跑了第7步
乌龟跑了第8步
乌龟跑了第9步
乌龟跑了第10步
乌龟跑了第11步
乌龟跑了第12步
乌龟跑了第13步
乌龟跑了第14步
乌龟跑了第15步
乌龟跑了第16步
乌龟跑了第17步
乌龟跑了第18步
乌龟跑了第19步
乌龟跑了第20步
乌龟跑了第21步
乌龟跑了第22步
乌龟跑了第23步
乌龟跑了第24步
乌龟跑了第25步
乌龟跑了第26步
乌龟跑了第27步
乌龟跑了第28步
乌龟跑了第29步
乌龟跑了第30步
乌龟跑了第31步
乌龟跑了第32步
乌龟跑了第33步
乌龟跑了第34步
乌龟跑了第35步
乌龟跑了第36步
乌龟跑了第37步
乌龟跑了第38步
乌龟跑了第39步
乌龟跑了第40步
乌龟跑了第41步
乌龟跑了第42步
乌龟跑了第43步
乌龟跑了第44步
乌龟跑了第45步
乌龟跑了第46步
兔子跑了第0步
乌龟跑了第47步
兔子跑了第1步
乌龟跑了第48步
兔子跑了第2步
乌龟跑了第49步
兔子跑了第3步
乌龟跑了第50步
兔子跑了第4步
乌龟跑了第51步
兔子跑了第5步
乌龟跑了第52步
兔子跑了第6步
乌龟跑了第53步
兔子跑了第7步
乌龟跑了第54步
乌龟跑了第55步
乌龟跑了第56步
兔子跑了第8步
乌龟跑了第57步
兔子跑了第9步
乌龟跑了第58步
乌龟跑了第59步
乌龟跑了第60步
乌龟跑了第61步
乌龟跑了第62步
乌龟跑了第63步
乌龟跑了第64步
乌龟跑了第65步
乌龟跑了第66步
乌龟跑了第67步
乌龟跑了第68步
乌龟跑了第69步
乌龟跑了第70步
乌龟跑了第71步
乌龟跑了第72步
乌龟跑了第73步
乌龟跑了第74步
乌龟跑了第75步
乌龟跑了第76步
乌龟跑了第77步
乌龟跑了第78步
乌龟跑了第79步
乌龟跑了第80步
乌龟跑了第81步
乌龟跑了第82步
乌龟跑了第83步
乌龟跑了第84步
乌龟跑了第85步
乌龟跑了第86步
乌龟跑了第87步
乌龟跑了第88步
乌龟跑了第89步
乌龟跑了第90步
乌龟跑了第91步
乌龟跑了第92步
乌龟跑了第93步
乌龟跑了第94步
乌龟跑了第95步
乌龟跑了第96步
乌龟跑了第97步
乌龟跑了第98步
乌龟跑了第99步
乌龟跑了第100步
乌龟win
兔子跑了第10步
兔子win
posted @ 2021-11-08 11:28  Oh,mydream!  阅读(36)  评论(0编辑  收藏  举报