2. 多线程案例
1. 火车票抢票
//多个线程同时操作同一个对象 //买火车票的例子 public class TestThread4 implements Runnable{ //票数 private int ticketNums = 10; @Override public void run() { while(true){ if(ticketNums<=0){ break; } Thread.sleep(200); System.out.println(Thread.currentThread().getName()+"-->拿到了第"+ticketNums--+"票"); } } public static void main(String[] args) { TestThread4 ticket = new TestThread4(); new Thread(ticket,"小明").start(); new Thread(ticket,"小红").start(); new Thread(ticket,"小李").start(); } }
2. 龟兔赛跑
1. 首先赛道距离,距离终点越来越近
2. 判断比赛是否结束
3. 打印出胜利者
4. 龟兔赛跑开始
5. 乌龟胜利,兔子模拟睡觉
//模拟龟兔赛跑 public class Race implements Runnable { //胜利者 private static String winner; @Override public void 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(); } }