多线程案例-龟兔赛跑

1)首先来个赛道距离,然后要离终点越来越近

2)判断比赛是否结束

3)打印出胜利者

4)龟兔赛跑开始

5)故事中是乌龟赢,兔子需要睡觉,所有我们来模拟兔子睡觉

6)终于,乌龟赢了比赛。

复制代码
 1 public class Race implements Runnable {
 2 
 3     // 胜利者,,因为只有一个,所以写成static的
 4     private static String winner;
 5     @Override
 6     public void run() {
 7 
 8         for (int i = 0; i <= 100  ;  i++) {
 9             if(Thread.currentThread().getName().equals("兔子")) {
10                 try {
11                     Thread.sleep(10);
12                 } catch (InterruptedException e) {
13                     e.printStackTrace();
14                 }
15             }
16             // 判断比赛是否结束
17             boolean flag = gameOver(i);
18             // 如果比赛结束,就停止程序
19             if (flag) {
20                 break;
21             }
22             System.out.println( Thread.currentThread().getName() + "走了" + i + "步");
23         }
24 
25     }
26 
27     // 判断是否完成比赛
28     private boolean gameOver (int steps) {
29         // 判断是否有胜利者
30         if (winner != null) { // 已经存在胜利者
31             return true;
32         } else {
33             if (steps >= 100) {
34                 winner = Thread.currentThread().getName();
35                 System.out.println("winner is " + winner);
36                 return true;
37             }
38         }
39         return  false;
40     }
41 
42     public static void main(String[] args) {
43         Race race = new Race();
44         new Thread(race,"乌龟").start(); // 乌龟跑起来
45         new Thread(race,"兔子").start(); // 兔子跑起来
46 
47     }
48 
49 
50 }
复制代码

 

posted on   Love&Share  阅读(111)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示