<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## java語言對線程的支持 java.lang Class Thread interface Runnable 線程實際執行的共同代碼public void run() ~~~java //繼承Thread創建線程和實現Runnable接口創建線程 public class Actor extends Thread { public void run() { //getName()獲取線程名稱 System.out.println(getName()+"是一個演員!"); int count = 0; boolean keepRunning = true; while (keepRunning) { System.out.println(getName()+"登臺演出:"+(++count)); if(count == 100){ keepRunning = false; } //當演出count能被10整除時,讓線程睡眠 if(count%10 == 0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println(getName()+"的演出結束了"); } public static void main(String[] args) { Thread actor = new Actor(); actor.setName("Mr.Thread"); actor.start(); Thread actressThread = new Thread(new Actress(),"Ms.Runnable"); actressThread.start(); } } class Actress implements Runnable{ public void run() { //getName()獲取d當前線程名稱 System.out.println(Thread.currentThread().getName()+"是一個演員!"); int count = 0; boolean keepRunning = true; while (keepRunning) { System.out.println(Thread.currentThread().getName()+"登臺演出:"+(++count)); if(count == 100){ keepRunning = false; } //當演出count能被10整除時,讓線程睡眠 if(count%10 == 0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println(Thread.currentThread().getName()+"的演出結束了"); } } ~~~ ### 線程的創建和啟動實例 隋唐演義三個對象: ArmyRunnable實現Runnable接口為兩支軍隊的線程 Stage為主線程,其余線程在Stage中創建 KeyPersonThread線程,start是用join方法使其他線程等待KeyPersonThread線程運行完 #### 軍隊-ArmyRunnable: ~~~java public class ArmyRunnable implements Runnable { //volatitle保證了線程可以正確的讀取其他線程寫入的值 //可見性 ref JMM ,happens-before原則 volatile boolean keepRunning = true; //軍隊線程模擬作戰雙方的行為 public void run() { //ctrl+1,新建布爾值 while(keepRunning){ //發動5連擊 for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName()+"進攻對方["+i+"]"); //讓出了處理器時間,下次誰進攻不一定 Thread.yield(); } } System.out.println(Thread.currentThread().getName()+"結束了戰斗!"); } } ~~~ #### 英雄人物-KeyPersonThread; ~~~java public class KeyPersonThread extends Thread { public void run() { System.out.println(Thread.currentThread().getName()+"開始了戰斗!"); for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName()+"左突右殺,攻擊隋軍.."); } System.out.println(Thread.currentThread().getName()+"結束了戰斗!"); } } ~~~ #### 舞臺-Stage ~~~java /** * 舞臺 */ public class Stage extends Thread { public static void main(String[] args) { new Stage().start(); } public void run() { System.out.println("開始"); try { Thread.sleep(5000); } catch (InterruptedException e1) { e1.printStackTrace(); } System.out.println("話說....."); ArmyRunnable armyTaskOfSuiDynasty = new ArmyRunnable(); ArmyRunnable armyTaskOfRevolt = new ArmyRunnable(); // 使用Runnable接口創建線程 Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty, "隋軍"); Thread armyOfRevolt = new Thread(armyTaskOfRevolt, "農民起義軍"); // 啟動線程 armyOfSuiDynasty.start(); armyOfRevolt.start(); // 舞臺線程休眠 try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false; try { armyOfRevolt.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("半路殺出咬"); Thread mrCheng = new KeyPersonThread(); mrCheng.setName("程咬金"); System.out.println("程咬金理想結束戰爭"); armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false; try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } /** * 關鍵人物登臺 */ mrCheng.start(); //所有線程等待程先生完成任務 try { mrCheng.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("結束!"); } } ~~~ ### 線程的常用方法 ![](http://www.hmoore.net/book/preview/image?book_id=15055&file=image/570ca35aad87f.png&ref=master)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看