中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中如何新建線程

發布時間:2021-06-17 14:02:26 來源:億速云 閱讀:123 作者:Leah 欄目:編程語言

本篇文章為大家展示了Java中如何新建線程,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一 點睛

當線程被創建啟動以后,它既不是一啟動就進入執行狀態,也不是一直處于執行狀態,在線程的生命周期中,它要經過新建、就緒、運行、阻塞和死亡5種狀態。當線程啟動后,它不可能一直霸占CPU獨自運行,所以CPU需要在多個線程之間切換,于是線程狀態也會多次在運行和就緒之間切換。

當程序使用new關鍵字創建一個線程后,該線程就處于新建狀態。

當線程對象調用start()方法之后,該線程就處于就緒狀態,處于這個狀態的線程并沒有開始運行,只是表示該線程可以運行了。至于該線程何時開始運行,取決于JVM里線程調度器的調度。

自動線程使用start()方法,而不是run()方法,永遠不要調用線程對象的run()方法。否則系統把線程對象當作一個普通對象,而run()方法也是一個普通方法,而不是線程執行體。

二 代碼

public class InvokeRun extends Thread
{
   private int i ;
   // 重寫run方法,run方法的方法體就是線程執行體
   public void run()
   {
      for ( ; i < 100 ; i++ )
      {
        // 直接調用run方法時,Thread的this.getName返回的是該對象名字,
        // 而不是當前線程的名字。
        // 使用Thread.currentThread().getName()總是獲取當前線程名字
        System.out.println(Thread.currentThread().getName()
           + " " + i);  // ①
      }
   }
   public static void main(String[] args)
   {
      for (int i = 0; i < 100; i++)
      {
        // 調用Thread的currentThread方法獲取當前線程
        System.out.println(Thread.currentThread().getName()
           + " " + i);
        if (i == 20)
        {
           // 直接調用線程對象的run方法,
           // 系統會把線程對象當成普通對象,run方法當成普通方法,
           // 所以下面兩行代碼并不會啟動兩條線程,而是依次執行兩個run方法
           new InvokeRun().run();
           new InvokeRun().run();
        }
      }
   }
}

三 運行

......
main 93
main 94
main 95
main 96
main 97
main 98
main 99
main 0
main 1
main 2
main 3
main 4
main 5
......

上述內容就是Java中如何新建線程,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌海市| 柳林县| 夏河县| 临高县| 古蔺县| 小金县| 孟津县| 象山县| 太保市| 成都市| 德化县| 温泉县| 桓台县| 杂多县| 建始县| 门头沟区| 麻江县| 阜阳市| 布尔津县| 耒阳市| 呈贡县| 北票市| 济源市| 子长县| 游戏| 正蓝旗| 新乡县| 南川市| 宾川县| 车险| 镇原县| 沽源县| 杭锦后旗| 泊头市| 札达县| 新龙县| 洞口县| 云和县| 体育| 定日县| 那坡县|