多线程案例-龟兔赛跑
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 2021-04-02 16:46 Love&Share 阅读(111) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~