Java多线程——龟兔赛跑

-_- 学java快有一个月了,之前一直有记录自己学习过程的想法,但是太懒了所以......
今天进入线程学习的部分了,老师说是最最最最难的,所以还是记录一下吧~~

从今天的作业说起

一、题目:
实现龟兔赛跑
提示:可以采用Math.random()取得0~1之间的随机数模拟比赛进程, 如总距离为100米,在随机数00.3之间代表兔子跑,每次跑2米,在0.31之间代表乌龟跑,每次跑1 米,先跑完100米者为胜利者
结构:
Race类:产生RabbitAndTurtle的两个实例,分别代表兔子和乌龟
RabbitAndTurtle类:继承Thread类,实现赛跑的逻辑

二、个人分析
拿到题目之后必要容易想到的是整个 题目的大概框架

1、RabbitAndTurtle类
//RabbitAndTurtle类继承Thread类实现多线程
public class RabbitAndTurtle extends Thread {
    //跑道长度
    public int distance = 100;
    //重写run方法
    @Override
    public void run() {
        //题目中提到的Math.random()方法,一开始我还没想到怎么用,先摆在这里
        double ran = Math.random();
        //先测试一下输出结果
        for (; distance > 0; distance--) {
            String name = Thread.currentThread().getName();
            System.out.println(name+" ");       
        }
    }
}
2、Race类
public class Race {
    public static void main(String[] args) {
        //产生RabbitAndTurtle的两个实例,分别代表兔子和乌龟
        Thread rabbit = new RabbitAndTurtle();
        Thread turtle = new RabbitAndTurtle();
        //setName()方法起名字
        rabbit.setName("小白兔子");
        turtle.setName("乌龟");
        //启动线程      
        rabbit.start();
        turtle.start();
    }
}

ok,写到这里程序的大致的内容已经差不多了,剩下的就是实现具体的run方法中的逻辑,我们先看一下有木有什么错误。

运行结果


运行结果

可以看到两个线程是随机交替进行的,接下来细化run方法

//补充几个属性
//跑道长度
public int distance = 100;
//不满足条件(如跑到了终点)结束线程
static boolean flag = true;
//已经跑了的长度
public int predistance = 0;
@Override
public void run() {
    //还是不知道怎么用的随机数-_-       
    double ran = Math.random();
    //获得当前线程名字
    String name = Thread.currentThread().getName();
    //进行循环立一个flag作为循环条件~~~
    while(flag){
    //我也不知道为什么要先sleep()一下-_-,原谅我很渣
    //但是看到有小伙伴这么说:
    //java多线程中,在有睡眠(sleep)时,执行顺序是抢占式的。
    //也就是说,执行不是按固有的顺序来的,而是谁抢先占据到内存空间,谁就先运行。
    //但是!老师说JVM默认的轮换调度就是抢占啊~~~~此处先留一个小疑问吧
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //还是搞不懂提示中的随机数,不是直接匹配名字就好了么-_-
        //明天讲了这一题再来纠结这个问题
        //如果当前线程为乌龟,一次前进一米
        if(name.equals("乌龟") && predistance!=100){
            predistance += 1;
            System.out.println(name + "我跑了:" + predistance + "米");
            if(predistance == 100){
                System.out.println("=================乌龟赢了=================");
                //立的flag在此处起作用,跑到100m了flag置为false不再进行循环
                flag = false;
            }
        }
        //如果当前线程为兔子,一次前进两米
        if(name.equals("小白兔子")&& predistance!=100){
            predistance += 2;
            System.out.println(name + "我跑了:" + predistance + "米");
            if(predistance == 100){
                System.out.println("=================小白兔子赢了=================");
                //立的flag在此处起作用,跑到100m了flag置为false不再进行循环
                flag = false;
            }
        }
    }   
}

激动人心的时候到了!!
让我们看一下运行结果~~~

运行结果

运行结果

基本符合题目要求|・ω・`),还是有一点开心的
但是!!!
最后一行是什么鬼!
我不管我不管我不管,看不见看不见看不见-_-
不是我的逻辑有问题!!

(´ཀ`」 ∠)_改了半天还是没改对
还是明天听讲解吧(๑‾ ꇴ ‾๑)
关于题目就写到这里

对了,我是一只萌新~~~~
欢迎各路大神指教,也欢迎一起学习的小伙伴互相讨论
对于文章中措辞或者逻辑捉急的地方欢迎大家指正
虽然怀疑有没有人会看到这篇文章 但还是写了很多~
我爱学习学习使我快乐

我爱学习学习使我快乐

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容

  • 昨天写的龟兔赛跑中存在一些问题,今天听老师讲解后清楚了许多,但是个人感觉老师的逻辑比较复杂(可能是我想的太简单-_...
    _Lucifer丶阅读 2,654评论 0 1
  • 位于神龙大陆神龙国神龙省神龙县神龙镇神龙村浅水湾的鳖速帝国拥有潜水湾近三分之二的领土,而帝国的领导者,鳖皇八世,...
    张三散人阅读 528评论 1 2
  • 这已经是乌龟与兔子的第一场比赛后的n次比赛了,有了n多个批评和经验后,龟与兔决定调整心态,重整旗鼓,秀出一个全新的...
    冰眉铁面阅读 471评论 0 0
  • 一直鼓捣爱海豚和lumosity最后看航空安全须知上了瘾好有意思啊小朋友们不喜欢听试卷讲解下棋的兴趣有所降低我该如...
    dq920813阅读 140评论 0 0
  • 其实他们出的书应该是视频节目的文字版,读来还是震撼不已,罗胖读书可真多啊,虽然有些听着可能歪门邪道,但他能将各种只...
    乙淳阅读 446评论 0 0