<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【JavaSE】多線程(龜兔賽跑)

      準備

      思緒

      想要建立一個龜兔賽跑的方法,我們首先要想到的就是多線程,創建一個進程中出現兩個線程,一只兔子,一只烏龜。

      1. 烏龜跑的慢,但是不會停下;兔子跑的快,但是會休息;
      2. 兩個都在同一出發點,走同樣遠的距離;
      3. 如果到最后,有一個到達終點,則游戲終結。

      線程解讀

      Thead類

      通過Thread 類創建線程,創建子類,繼承自Thread ,并且重寫run方法。

      class MyThread extends Thread {
          @Override
          public void run() {
              System.out.println("Hello thread");
          }
      }
      

      之后實例化Thread,創建實例對象

       Thread thread = new MyThread();
      

      start 方法啟動線程

      thread.start();
      

      這樣在創建main主方法中 將線程啟動就好了

      public static void main(String[] args){
      	Thread thread = new MyThread();
      	thread.start();
      } 
      

      thread.sleep:使線程短暫休眠

      Runnable接口

      通過使用Runnable接口創建進程對象,實現Runnable接口

      public class Race implements Runnable {
          @Override
          public void run() {
            	 System.out.println("Hello Runnable");
          }
      }
      

      創建main主方法

      public static void main(String[] args) {
      	Race race = new Race();
      	
      	//寫法1
      	Thread thread = new Thread(race);
      	thread.start();
        
      	//寫法2
      	new Thread (race,"name").start();
      }
      

      Thread 的常見構造方法

      Thread():創建線程對象
      Thread(Runnable target):使用 Runnable 對象創建線程對象
      Thread(String name):創建線程對象,并命名
      Thread(Runnable target, String name):使用 Runnable 對象創建線程對象,并命名

      實施過程

      實現龜兔賽跑,首先在重寫的run方法中建立一個賽道,計算距離

      public class Race implements Runnable {
      	for(i=0,i==100;i++){
      		// xx跑了多少步
      		System.out.println(Thread.currentThread().getName()+"跑了"+i+ "步"}
      }
      

      Thread.currentThread表示當前代碼段正在被哪個線程調用的相關信息。

      創建main主方法,new兩個對象:兔子和烏龜

      public static void main(String[] args){
      	
      	Race race = new Race();
      
      	new Thread(race,"兔子".start();
      	new Thread(race,"烏龜".start();
      }
      

      判定比賽結束

      // 定義一個單例的靜態值
      private static String winner;
      
      // 創建一個游戲結束的判斷方法
      public boolean gameOver(step){
      	if(winner!=null){
      		return true;
      	}else if(step>=100){
      		winner = Thread.currThread().getName();
      		System.out.println(winner + "獲勝");
      		return true;
      	}
      	return false;
      }
      

      在for循環中追加一個標記flag,如果一方勝利則跳出循環

      boolean flag = gameOver(i);
      if (flag){
      	break;
      }
      

      追加兔子睡覺的sleep機能

       if ("兔子".equals(Thread.currentThread().getName()) && i % 10 == 0) {
      	 try {
      	     Thread.sleep(10);
      	 } catch (InterruptedException e) {
      	     e.printStackTrace();
      	 }
       }
      

      整合代碼

      package com.stu;
      
      /**
       * 多線程的龜兔賽跑
       * 通過 Runnable 接口
       */
      public class Race implements Runnable {
      
          // 定義一個勝利者對象
          private static String winner;
      
          public static void main(String[] args) {
              Race race = new Race();
              // 開啟線程
              new Thread(race, "兔子").start();
              new Thread(race, "烏龜").start();
          }
      
          // 重寫一個run方法
          @Override
          public void run() {
              for (int i = 0; i < 101; i++) {
      
                  //flag 比賽結果
                  boolean flag = gameOver(i);
      
                  // 比賽結束 跳出循環
                  if (flag) {
                      break;
                  }
      
                  // 判斷如過是兔子就會偷懶睡覺
                  if ("兔子".equals(Thread.currentThread().getName()) && i % 10 == 0) {
                      try {
                          Thread.sleep(10);
                      } catch (InterruptedException e) {
                          e.printStackTrace();
                      }
                  }
      
                  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;
          }
      }
      
      
      posted @ 2022-11-02 22:32  柯基大大  閱讀(6)  評論(0)    收藏  舉報  來源
      主站蜘蛛池模板: 亚洲精品国偷拍自产在线观看蜜臀| 日韩精品有码中文字幕| 国产女人18毛片水真多1| 色综合天天综合天天综| 国产欧美日韩精品丝袜高跟鞋| 亚洲中文字幕日产无码成人片| 国产精品视频一区不卡| 国产人妻精品午夜福利免费| 亚洲国产精品乱码一区二区| 久久精品国产亚洲AⅤ无码| 亚洲狠狠爱一区二区三区| 蜜臀久久99精品久久久久久| 亚洲 欧美 综合 另类 中字| 亚洲综合伊人久久大杳蕉| 亚洲国产一区二区三区久| 亚洲av成人精品日韩一区| 99久久亚洲综合精品成人网| 中文字幕国产精品综合| 亚洲精品国产自在现线最新| 不卡国产一区二区三区| 科尔| 麻花传媒在线观看免费| 国产亚洲情侣一区二区无| 亚洲熟少妇在线播放999| 日韩中文字幕亚洲精品| 亚洲国产成人久久精品不卡| 亚洲国内精品一区二区| 日本高清视频网站www| 男女18禁啪啪无遮挡激烈网站| 国产91丝袜在线观看| 曰韩无码二三区中文字幕| 日韩精品无码不卡无码| 十八禁国产一区二区三区| 精品免费国产一区二区三区四区 | 加勒比中文字幕无码一区| 麻豆妓女爽爽一区二区三| 国产v综合v亚洲欧美大天堂| 亚洲国产成人综合自在线| 成人特黄特色毛片免费看| 嗯灬啊灬把腿张开灬动态图| 人妻精品动漫h无码|