韋東山ARM架構(gòu)與編程·基于STM32F103\/--》ccys1473
/**
?* 模擬龜兔賽跑
?*/
public class Demo5_RaceCase implements Runnable {
? ? //勝利者
? ? private static String winner;
? ? @Override
? ? public void run() {
? ? ? ? for (int i = 0; i <= 100; i++) {
? ? ? ? ? ? //模擬兔子休息
? ? ? ? ? ? if (Thread.currentThread().getName().equals("兔子") && i % 10 == 0) {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? Thread.sleep(2);
? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? //判斷比賽是否結(jié)束
? ? ? ? ? ? boolean flag = gameOver(i);
? ? ? ? ? ? //如果比賽結(jié)束,停止程序
? ? ? ? ? ? if (flag) {
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? System.out.println(Thread.currentThread().getName() + "--->跑了" + i + "步");
? ? ? ? }
? ? }
? ? //判斷是否完成
? ? private boolean gameOver(int steps) {
? ? ? ? if (winner != null) {
? ? ? ? ? ? return true;
? ? ? ? } else {
? ? ? ? ? ? if (steps >= 100) {
? ? ? ? ? ? ? ? winner = Thread.currentThread().getName();
? ? ? ? ? ? ? ? System.out.println("winner is " + winner);
? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return false;
? ? }
? ? public static void main(String[] args) {
? ? ? ? Demo5_RaceCase race = new Demo5_RaceCase();
? ? ? ? new Thread(race, "兔子").start();
? ? ? ? new Thread(race, "烏龜").start();
? ? }
}