首页 > 编程语言 >Java多线程-龟兔赛跑

Java多线程-龟兔赛跑

时间:2023-08-05 22:00:30浏览次数:41  
标签:Java Thread currentThread 龟兔 return 多线程 public

Java多线程-龟兔赛跑

package com.alibaba;

public class TestThread003 implements Runnable{
    private String winner;

    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            boolean flag = getWinner(i);
            if(flag){
                break;
            }
            System.out.println(Thread.currentThread().getName()+"---->跑了"+i+"步");
            if(Thread.currentThread().getName().equals("兔子") && i%10 == 0 && i != 0){
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public boolean getWinner(int steps){
        if(winner != null){
            return true;
        }
        if(steps >= 100){
            winner = Thread.currentThread().getName();
            System.out.println(Thread.currentThread().getName()+"赢得了比赛!");
            return  true;
        }
        return false;
    }

    public static void main(String[] args) {
        TestThread003 testThread003 = new TestThread003();
        new Thread(testThread003,"兔子").start();
        new Thread(testThread003,"乌龟").start();
    }
}

标签:Java,Thread,currentThread,龟兔,return,多线程,public
From: https://www.cnblogs.com/dmbj/p/17608724.html

相关文章

  • 学习Java第15天
    包机制为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。包语句的语法格式为:packagepkg1[.pkg2[.pkg3...]];一般利用公司域作为包名;为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"inport"语句可完成此功能importpackage[pack......
  • Java学习笔记(三)
    第3章流程控制语句结构(上)3.1表达式和语句1、常量、变量:都是数据2、运算符:各种运算符(有赋值的、有算术计算的、有判断关系的等)3、表达式:(1)常量/变量+运算符构成一个计算表达式。(2)new表达式(3)方法调用表达式计算表达式和new表达式都有一个结果,这个结果可以用于输出或下一步......
  • 《Java编程思想第四版》学习笔记04
    在面向对象的程序设计中,创建和使用代码最可能采取的一种做法是:将数据和方法统一封装到一个类里,并且使用那个类的对象。有些时候,需通过“合成”技术用现成的类来构造新类。而继承是最少见的一种做法。因此,尽管继承在学习OOP的过程中得到了大量的强调,但并不意味着应该尽可能地到处......
  • JAVA SE基础《八》 ---- 面对对象编程
    目录一、面向对象编程快速入门二、深刻认识面向对象三、对象在计算机中的执行原理四、类和对象的一些注意事项五、其他语法:this六、其他语法:构造器七、其他语法:封装八、其他语法:实体JavaBean九、面向对象编程综合案例十、补充知识:成员变量、局部变量的区别小结 前言......
  • idea java maven 项目 符号找不到
    描述:新建了一个springboot项目项目正常引入了maven依赖在实体类中引入了额@Setter@Getter注解在前端传递赋值或者new实体类给属性赋值提示找不到符号:网上找了好多的办法,都不太使用我的场景pom中引入了插件导致的问题,移除插件重试一下看看效果  ......
  • 多线程访问数据库报错
    在用flask实现http服务器的时候,只需要指定路由和访问方法,前端的访问就可以获取到,然后触发后端的响应函数,如果后端响应函数用公用的sqlconnection的时候,可能会导致数据库连接冲突报错,报错内容如下:AttributeError:'NoneType'objecthasnoattribute'read' 参考这篇博客的解......
  • Linux系统下将java程序开机自启
    Linux系统下将java程序开机自启在Linux环境下,可以通过将Java程序配置为系统服务(systemd服务)来实现开机自启动。使用systemd可以很方便地管理和控制后台服务,包括Java程序。以下是一个简单的步骤来配置Java程序为systemd服务:1.编写启动脚本创建一个脚本文件,用于启动您的Java程序......
  • java练习
    packageuse;//importcom.x.Dog;需要用到那个类,就导入那个类importcom.x.*;//导入包下的所有类publicclassuser{publicstaticvoidmain(String[]args){Dogdog=newDog();com.y.Dogdog1=newcom.y.Dog();"hello".equal......
  • java中ConcurrentHashMap底层原理 - 面试宝典
    ConcurrentHashMap是Java中的线程安全的哈希表实现。它通过使用分段锁(Segment)来实现并发访问的高效率。下面是ConcurrentHashMap的底层原理:数据结构:ConcurrentHashMap内部由一个Segment数组和若干个哈希桶(HashEntry)组成。每个Segment包含一个哈希桶数组和一个共享的锁。每个哈希桶......
  • 深度剖析JAVA 函数式接口
    一、什么是函数式接口:函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。可以有多个非抽象方法。为了避免别人在这个接口中增加......