java多线程实现龟兔赛跑

利用多线程模拟龟兔赛跑,乌龟一直跑,兔子跑十步停一下,任何一个跑完100步即获胜,比赛结束

思路:开启两个线程,一个兔子跑,一个乌龟跑,兔子的线程要设置一个条件,10步一停,然后就是结束条件,一个跑完比赛结束,所以要用在一个方法体中比赛,同时要有一个判定结束的条件。

public class Thread05 implements Runnable{
	String name=null;    //记录获胜者的名字
	@Override
	public void run() {
		for(int i=1;i<=100;i++) {    //跑100步结束
			//当线程名是兔子时,并且跑了10步时,休眠1ms
            if("兔子".equals(Thread.currentThread().getName()) && i%10==0) {    
				try {
					Thread.sleep(1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			//看谁在跑第几步
            System.out.println(Thread.currentThread().getName()+"在跑第"+i+"步");
			//调用方法判断比赛结束的依据,只要任意一方到到100,即结束
            boolean flag=over(i);
			if(flag) {
				break;
			}
		}
	}
	
    public boolean over(int i) {
		//名字已经有人了,返回true,线程结束
        if(name!=null) {
			return true;
		}else if(i==100) {    //步数到100,设置获胜者名字等于线程名,结束线程
			name=Thread.currentThread().getName();
			return true;
		}
		return false;
	}
	
    public static void main(String[] args) {
		//开启两个线程,各自起名
        Thread05 th=new Thread05();
		Thread th1=new Thread(th,"兔子");    
		Thread th2=new Thread(th,"乌龟");
		th1.start();
		th2.start();
	}
}

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值