其他分享
首页 > 其他分享> > 多线程案例-龟兔赛跑

多线程案例-龟兔赛跑

作者:互联网

1.要有赛道距离,我和终点越来越近
2.判断比赛是否结束
3.打印出胜利者
4.龟兔赛跑开始
5.模拟兔子睡觉
6.龟赢了
import java.util.Scanner;
//模拟龟兔赛跑
public class Main implements Runnable {
    //胜利者
    private static String winncr;
    public void run(){
        //创建赛道的距离
        for (int i=0;i<=100 ;i++ ){
            //判断,让兔子休息
            if(Thread.currentThread().getName().equals("兔")&&i%10==0){//当线程名称为兔时且每走10步,就让他休息
                try {
                     Thread.sleep(10);
                } catch(InterruptedException e) {
                    e.printStackTrace();
                } 
            }else{
            //判断比赛是否结束
           boolean flag=gameOver(i);
           if(flag){//flag=true,就结束程序
               break;
           }
            
            System.out.println(Thread.currentThread().getName()+"---->跑了"+i+"步");

        }
       
        }
        
    }
    
    
    //判断游戏是否停止
    private boolean gameOver(int sleps){//sleps:步数
        //判断是否有胜利者
        if(winncr!=null){//已经有胜利者
            return true;
        }{
            if(sleps>=100){
                winncr=Thread.currentThread().getName();//如果步数等于100,就得到这个线程的名字
                System.out.println("胜者:"+winncr+"走了"+sleps);
                
                return true;
            }
        }
        //如果上面两个判断都没有执行就代表比赛未结束
        return false;
    }    
    public static void main(String[] args) {
        //创建资源,也相当于是赛道
        Main pf=new Main();
        //创建两个线程,并命名,然后启动
        new Thread(pf,"龟").start();
        
    
        new Thread(pf,"兔").start();//让兔线程延时
         
        
    }
}

 

 

标签:赛道,赛跑,Main,return,龟兔,sleps,winncr,胜利者,多线程
来源: https://www.cnblogs.com/huxingchen/p/16175354.html