【Java】多线程之实现Runnable接口

 1 /**
 2  * 
 3  */
 4 package com.raliable.chapter_0;
 5 /** 
 6 * @author : Administrator
 7 * @date :2022年4月30日 下午5:23:22 
 8 * 
 9 */
10 /**
11  * @author Administrator
12  * 1.实现Runnable接口,重写run方法
13  * 2.实例化多线程类,多个多线程对象传入不同的线程
14  * 3.new Thread(race,"乌龟").start();
15  */
16 public class Race implements Runnable {
17     private String winner;
18     /* (非 Javadoc)
19      * @see java.lang.Runnable#run()
20      */
21     @Override
22     public void run() {
23         // TODO 自动生成的方法存根
24         for (int i = 0 ;i <= 300;i++)
25         {
26             // 模拟兔子休息
27 //            if(Thread.currentThread().getName().equals("兔子") && (i%10==0)) {
28 //                try {
29 //                    Thread.sleep(5);
30 //                } catch (InterruptedException e) {
31 //                    // TODO 自动生成的 catch 块
32 //                    e.printStackTrace();
33 //                }
34 //            }
35             // 判断比赛是否结束!
36             boolean flag = gameOver(i);
37             if (flag) {
38                 break;
39             }
40             
41             System.out.println(Thread.currentThread().getName()+"跑了--->"+i+"步!");
42             
43         }
44     }
45     // 判断比赛是否结束
46     private boolean gameOver(int steps) {
47         if (winner!=null) {
48             return true;
49         }{
50             if (steps >= 300) {
51                 winner = Thread.currentThread().getName();
52                 System.out.println("胜利者是:"+winner);
53                 return true;
54             }
55         }
56         return false;
57     }
58     
59     public static void main(String[] args) {
60         Race race = new Race();
61         new Thread(race,"乌龟").start();
62         new Thread(race,"兔子").start();
63     }
64 }

 

posted @ 2022-04-30 18:01  靠谱杨  阅读(128)  评论(0编辑  收藏  举报