java多线程龟兔赛跑带图片_java多线程模拟实现龟兔赛跑

本文通过Java的多线程实现了一个龟兔赛跑的模拟,其中兔子和乌龟分别由两个线程控制。每个线程运行时会随机决定前进距离,最终兔子先到达终点,比赛结束。该示例展示了Java中多线程共享资源并行执行的原理。

RabbitAndTurtle3.java

package com.Thread2;

/**龟兔赛跑:实现Runnable接口,

* 此时两个线程共用一个run方法,如果给run加锁,执行效果会很明显,要么先执行完兔子的线程后再执行乌龟的,反之相反,区别在于谁先拿到资源

* 先执行了run方法,显然这种可以证明此时执行了一个run方法而不是两个。

* 测试类;Race3.java

* @author HYZX

* 假设兔子一次跑4米,乌龟一次跑1米

*/

public class RabbitAndTurtle3 implements Runnable{

int i;

int j;

static boolean flag=true;

public void run() {

while(flag){

double num=Math.random();

if(num<=0.3&&"兔子".equals(Thread.currentThread().getName())){

i=i+4;

System.out.println(Thread.currentThread().getName()

+"跑了:"+i+"米");

if(i==100){

System.out.println("比赛结束!------第一名是:"+Thread.currentThread().getName()

+"跑了:"+i+"米");

flag=false;

}

}else if(num<=1&&num>0.3&&"乌龟".equals(Thread.currentThread().getName())){

j=j+1;

System.out.println(Thread.currentThread().getName()

+"跑了:"+j+"米");

if(j==100){

System.out.println("比赛结束!------第一名是:"+Thread.currentThread().getName()

+"跑了:"+j+"米");

flag=false;

}

}

}

}

}

Race3.java

package com.Thread2;

public class Race3 {

public static void main(String[] args) {

RabbitAndTurtle3 r=new RabbitAndTurtle3();

Thread tuzi =new Thread(r,"兔子");

Thread wugui=new Thread(r,"乌龟");

tuzi.start();

wugui.start();

}

}

效果如下:

兔子跑了:4米

乌龟跑了:1米

兔子跑了:8米

乌龟跑了:2米

乌龟跑了:3米

乌龟跑了:4米

乌龟跑了:5米

乌龟跑了:6米

乌龟跑了:7米

兔子跑了:12米

乌龟跑了:8米

兔子跑了:16米

乌龟跑了:9米

乌龟跑了:10米

乌龟跑了:11米

乌龟跑了:12米

乌龟跑了:13米

兔子跑了:20米

乌龟跑了:14米

乌龟跑了:15米

乌龟跑了:16米

乌龟跑了:17米

兔子跑了:24米

乌龟跑了:18米

兔子跑了:28米

乌龟跑了:19米

兔子跑了:32米

乌龟跑了:20米

兔子跑了:36米

乌龟跑了:21米

兔子跑了:40米

兔子跑了:44米

兔子跑了:48米

兔子跑了:52米

兔子跑了:56米

兔子跑了:60米

兔子跑了:64米

兔子跑了:68米

兔子跑了:72米

兔子跑了:76米

兔子跑了:80米

兔子跑了:84米

兔子跑了:88米

兔子跑了:92米

兔子跑了:96米

兔子跑了:100米

比赛结束!------第一名是:兔子跑了:100米

标签:java,Thread,龟兔,兔子,run,乌龟,多线程,public

来源: https://blog.youkuaiyun.com/HYZX_9987/article/details/101217704

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值