首页 > 其他分享 >多线程.模拟龟兔赛跑

多线程.模拟龟兔赛跑

时间:2023-11-27 09:22:54浏览次数:42  
标签:赛跑 龟兔 return currentThread Thread getName winner 多线程 public

package JavaSE.Thread.document01;

/**
* 模拟龟兔赛跑
*/
public class Demo05 implements Runnable {
public static String winner;//胜者

@Override
public void run() {
for (int i = 1; i <= 100; i++) {
if (Thread.currentThread().getName().equals("兔子")&&i%20==0){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//判断比赛是否结束
boolean winners = gameover(i);
if (winners){
break;
}
System.out.println(Thread.currentThread().getName() + "跑了" + i + "步");
}

}

private boolean gameover(int stepcount) {//判断是否完成比赛
if (winner != null) {//已经存在胜者
return true;
}
{
if (stepcount>=100){
winner=Thread.currentThread().getName();
System.out.println("胜者:"+winner);
return true;
}
}
return false;
}

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

}
}

标签:赛跑,龟兔,return,currentThread,Thread,getName,winner,多线程,public
From: https://www.cnblogs.com/ly123dcom/p/17858451.html

相关文章

  • 多线程编程之——终止(打断)正在执行中的线程
    多线程编程之——终止(打断)正在执行中的线程ps:文字有点多,想看结果的,直接跳转:《二》一、基础知识1、我们基于spring开发,把线程都交给spring把线程交给spring管理好不好?将线程交给Spring管理是一个常见的做法,特别是在基于Spring的应用程序中。通过将线程纳入Spring的管理......
  • 一个用于多线程共享数据保护测试的简易游戏服务器代码
    #include<iostream>#include<thread>#include<list>#include<mutex>//一个线程负责从客户端读取用户的命令,放入一个队列中;//另一个线程负责从队列中读取命令并解析,假设用一个int变量代表一个命令。classA{public://这里无法模拟从网络接受命令的过程,我们......
  • 多线程
    多线程线程其实是程序中的一条执行路径我之前所以写的程序,其实都是单线程程序那么怎样的程序才是多线程程序呢?支持同时有很多人一起进入网站,并且每一个人的行为互不影响。例如百度网盘中,可以同时上传或者下载的多个文件,这些程序中其实就有多条执行路径,每一个执行路径就是一条......
  • C++11 多线程并发 互斥量、条件变量和信号量
    互斥量Classesmutex(C++11)providesbasicmutualexclusionfacility(class)timed_mutex(C++11)providesmutualexclusionfacilitywhichimplementslockingwithatimeout(class)recursive_mutex(C++11)providesmutualexclusionfacili......
  • 【Python进阶笔记】md文档笔记第6篇:Python进程和多线程使用(图文和代码)
    本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。全套md格式笔记和代码自取:请移步这里......
  • java多线程学习之路-不能理解
    1importjava.util.concurrent.CountDownLatch;23/**4*颠覆理解的,为什么不会出问题,执行多次,结果都是正确,并且一致5*/6classMyData{7inta=5;//可预定总座位数8intb=0;//已预定座位数910publicvoidyd(){11if(b<......
  • C++11 多线程(std::thread)实例
    C++11的std::thread在C中已经有一个叫做pthread的东西来进行多线程编程,但是并不好用(如果你认为句柄、回调式编程很实用,那请当我没说),所以c++11标准库中出现了一个叫作std::thread的东西。std::thread常用成员函数构造&析构函数举个栗子例一:thread的基本使用1//Compiler:......
  • Android新手必学:关于多线程的知识
    引言在Android开发中,多线程编程是一项非常重要的技能。Android应用程序通常需要同时执行多个任务,如网络请求、文件读写、耗时计算等。如果在主线程中执行这些任务,会导致应用程序的界面卡顿,用户体验变差。因此,我们需要使用多线程来实现并发执行任务,提高应用程序的响应性能和用户体验......
  • 深入Android多线程编程与性能优化
    引言在上一篇的入门篇中,我们对Android线程的基础概念和多线程编程模型有了初步了解。本篇将深入探讨多线程编程技术和性能优化策略,以提升应用的效率和响应性。高级多线程编程技术使用线程池管理线程线程池是一组预先创建的线程,用于执行任务。通过使用线程池,可以避免不断创建和销毁......
  • 关于阻塞多线程
    关于阻塞多线程同步方式理解:一个循环循环100次。多线程方式理解:开10个循环同时执行循环,每个循环循环10次。......