zoukankan      html  css  js  c++  java
  • [Java]多线程,龟兔赛跑

    用多线程模拟龟兔赛跑

    package Thread;
    
    /**
     * 多线程模拟龟兔赛跑
     *
     * @author ZhaoLu cang on 2021/4/10 0010
     */
    public class Race implements Runnable{
    
        //胜利者变量
        private String winner;
    
        @Override
        public void run() {
            for(int i=0;i<=100;i++){
    
                //兔子睡觉,线程名为兔子且每20m睡觉一次
                if(Thread.currentThread().getName().equals("兔子") && i%20==0){
                    try {
                        //睡1ms
                        Thread.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
    
                //判断比赛是否结束
                boolean flag=gameOver(i);
                if(flag){
                    break;
                }
                System.out.println(Thread.currentThread().getName()+"已经跑了"+i+"米");
            }
        }
    
        //判断是否完成比赛
        public boolean gameOver(int meters){
            //判断是否有胜利者
            if(winner!=null){//表明存在胜利者
                return true;
            }else {
                //跑完一百米则输出胜利者
                if(meters==100){
                    winner=Thread.currentThread().getName();
                    System.out.println("胜利者是"+winner);
                    return true;
                }
            }
            return false;
        }
    
        public static void main(String[] args) {
            Race race=new Race();
            new Thread(race,"兔子").start();
            new Thread(race,"乌龟").start();
        }
    }
    View Code

  • 相关阅读:
    TCP/IP
    Socket通信
    Dubbo详解
    高并发详解
    P3-DataBase
    JAVA基础学习之路(十)this关键字
    [SHELL]输出目录下所有的可执行文件,批量创建用户
    JAVA基础学习之路(八)[1]String类的基本特点
    [MYSQL][2]索引
    [MYSQL][1]创建,修改,删除表
  • 原文地址:https://www.cnblogs.com/zlc364624/p/14641602.html
Copyright © 2011-2022 走看看