多线程的实例之龟兔赛跑
龟兔赛跑我们可以看成两个线程并发执行,我们可以通过让其中一个线程 “睡觉” 来实现 “操盘”,下面让我们看一下代码如何实现:
public class TestThread implements Runnable{ static String winner; @Override public void run(){ //定义一条“跑道” for (int i = 1; i <= 1000; i++) { //让兔子睡觉的条件 if(i%500==0&&Thread.currentThread().getName().equals("兔子")){ try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } boolean flag = gameOver(i); if(flag){ break; } System.out.println(Thread.currentThread().getName()+"跑了"+i+"步"); } } //定义一个方法判断是否已经产生了冠军 private boolean gameOver(int step) { if(winner!=null){ return true; }if (step>=1000){ winner=Thread.currentThread().getName(); System.out.println("----Game Over----"); System.out.println("胜利者是"+winner); return true; } return false; } public static void main(String[] args) { TestThread testThread = new TestThread(); new Thread(testThread,"兔子").start(); new Thread(testThread,"乌龟").start(); } }
代码的运行结果为:
因为中途我们设置的让兔子睡觉,所以,结果是乌龟胜利。
上一篇:
通过多线程提高代码的执行效率例子