大家好,今天分享一下Java多线程之龟兔赛跑的案例
源码:
package Demo01;
//这是一个龟兔赛跑的实际案例
public class Race implements Runnable {
private static String winner; //胜利者
@Override
public void run() { //重写run()方法
for (int i = 0; i <=100; i++) { //循环
boolean flag = gameOver(i);
if (flag){
break;
}
System.out.println(Thread.currentThread().getName() + "-->跑了" + i + "步"); //输出信息
}
}
private boolean gameOver(int steps) { //判断比赛是否完成
if (winner != null) { //判断是否有胜利者
return true;
}
{
if (steps >= 100) {
winner = Thread.currentThread().getName();
System.out.println("winner is " + winner);
return true;
}
}
return false;
}
public static void main(String[] args) {
Race race =new Race(); //建立线程对象
new Thread(race,"兔子").start(); //启动线程
new Thread(race,"乌龟").start();
}
}
结果:
接下来让兔子睡觉:
package Demo01;
//这是一个龟兔赛跑的实际案例
public class Race implements Runnable {
private static String winner; //胜利者
@Override
public void run() { //重写run()方法
for (int i = 0; i <=100; i++) {
//循环
if(Thread.currentThread().getName().equals("兔子")&& i%10==0) {
try {
Thread.sleep(500); //让兔子睡觉
}catch (InterruptedException e){
e.printStackTrace();
}
}
boolean flag = gameOver(i);
if (flag){
break;
}
System.out.println(Thread.currentThread().getName() + "-->跑了" + i + "步"); //输出信息
}
}
private boolean gameOver(int steps) { //判断比赛是否完成
if (winner != null) { //判断是否有胜利者
return true;
}
{
if (steps >= 100) {
winner = Thread.currentThread().getName();
System.out.println("winner is " + winner);
return true;
}
}
return false;
}
public static void main(String[] args) {
Race race =new Race(); //建立线程对象
new Thread(race,"兔子").start(); //启动线程
new Thread(race,"乌龟").start();
}
}
看结果:
在兔子睡觉发的情况下,乌龟就赢了。
好了,有关于Java多线程之龟兔赛跑的案例就到这里了,谢谢大家