JAVA 线程入门经典实例:龟兔赛跑

Thalia ·
更新时间:2024-09-21
· 817 次阅读

JAVA 线程入门经典实例:龟兔赛跑

JAVA实验课 龟兔赛跑
设计2个线程, 一个表示乌龟, 一个表示兔子。
乌龟每秒跑一步, 步长为10以内的随机数;
兔子每5秒跑一步,步长为30以内的随机数;
假设整个赛道总长为100步长,看看谁先到达终点。

**刚开始我的思路是:**写三个分开的类:

代码: /** * */ public class M { public static void main(String[] args) { new Thread(new Rabbit()).start(); new Thread(new Tortoise()).start(); //让本线程睡一下 try { Thread.sleep(600);//休息时间 } catch (InterruptedException e) { e.printStackTrace(); } if(Rabbit.d>Tortoise.c){ System.out.println("乌龟胜利"); } else{ System.out.println("兔子胜利"); } } } mport java.util.Random; public class Rabbit implements Runnable { public static int d=0; private volatile int total=0;//记录行驶的步长 @Override public void run() { for(int i=1;i=100){ System.out.println("兔子结束"); d=i; break; } } System.out.println("兔子使用的时间="+d); } } import java.util.Random; /** * Aurora 2020年4月10日 */ public class Tortoise implements Runnable { public static int c=0; private volatile int sum=0;//记录行驶的步长 @Override public void run() {//重写的方法(重载) for(int j=1;j=100){ System.out.println("乌龟结束"); c=j; break; } } System.out.println("乌龟使用的时间="+c); } }

**后来我又想到了内部类的概念,于是代码就成这样了:
**

import java.util.Random; public class MAIN{ public static boolean f1=false; public static boolean f2=false; public static void main(String[] args) { new Thread(new Rabbit()).start(); new Thread(new Tortoise()).start(); for(int q=0;qTortoise.c){ System.out.println("乌龟胜利"); } else{ System.out.println("兔子胜利"); } break; } } } public static class Rabbit implements Runnable { public static int d=0; private volatile int total=0;//记录行驶的步长 @Override public void run() { for(int i=1;i=100){ System.out.println("兔子结束"); d+=i; break; } } System.out.println("兔子使用的时间="+d); f1=true; } } public static class Tortoise implements Runnable { public static int c=0; private volatile int sum=0;//记录行驶的步长 @Override public void run() { for(int j=1;j=100){ System.out.println("乌龟结束"); c+=j; break; } } System.out.println("乌龟使用的时间="+c); f2=true; } } }
作者:DAurora



JAVA 龟兔赛跑 线程

需要 登录 后方可回复, 如果你还没有账号请 注册新账号