最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java線程的新建和就緒狀態(tài)實例分析

 更新時間:2019年09月12日 10:39:00   作者:cakincqm  
這篇文章主要介紹了Java線程的新建和就緒狀態(tài),結(jié)合實例形式分析了java線程的創(chuàng)建、調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Java線程的新建和就緒狀態(tài)。分享給大家供大家參考,具體如下:

一 點睛

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

當(dāng)程序使用new關(guān)鍵字創(chuàng)建一個線程后,該線程就處于新建狀態(tài)。

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

自動線程使用start()方法,而不是run()方法,永遠(yuǎn)不要調(diào)用線程對象的run()方法。否則系統(tǒng)把線程對象當(dāng)作一個普通對象,而run()方法也是一個普通方法,而不是線程執(zhí)行體。

二 代碼

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

四 說明

上面程序創(chuàng)建對象后直接調(diào)用了線程對象的run()方法,程序的運行結(jié)果是整個程序只有一個線程:主線程。

如果直接調(diào)用線程對象的run()方法,則run()方法里不能直接通過getName()方法來獲得當(dāng)前執(zhí)行線程的名字,而是需要使用Thread.currentThread()方法先獲得當(dāng)前線程,再調(diào)用線程對象的getName()方法來獲得線程的名字。

啟動線程的正確方法是調(diào)用Thread對象的start()方法,而不是直接調(diào)用run()方法,否則就會變成單線程程序。

調(diào)用了run()方法之后,該線程已經(jīng)不再處于新建狀態(tài),不要再次調(diào)用線程對象的start()方法。

只能對處于新建狀態(tài)的線程調(diào)用start()方法,否則會引發(fā)異常。

如果希望調(diào)用子線程的start()方法后子線程立即開始執(zhí)行,程序可以使用Thread.sleep(1)來讓當(dāng)前運行的線程(主線程)睡眠1毫秒,因為1毫秒內(nèi)CPU不會空閑,它會去執(zhí)行另一個處于就緒狀態(tài)的線程,這樣就可以讓子線程立即開始執(zhí)行。

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進(jìn)程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • IDEA操作MongoDB及安全認(rèn)證方式

    IDEA操作MongoDB及安全認(rèn)證方式

    這篇文章主要介紹了IDEA操作MongoDB及安全認(rèn)證方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java的MybatisPlus調(diào)用儲存過程的返回數(shù)據(jù)問題

    java的MybatisPlus調(diào)用儲存過程的返回數(shù)據(jù)問題

    這篇文章主要介紹了java的MybatisPlus調(diào)用儲存過程的返回數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java容器ArrayList原理解析

    Java容器ArrayList原理解析

    這篇文章主要介紹了Java容器ArrayList原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 深入理解java代碼實現(xiàn)分治算法

    深入理解java代碼實現(xiàn)分治算法

    分治算法是一種遞歸算法,它將問題劃分為幾個獨立的子問題,然后遞歸地解決這些子問題,最后將子問題的解合并起來得到原問題的解,本文詳細(xì)的介紹java分治算法,感興趣的可以了解一下
    2023-09-09
  • Java網(wǎng)絡(luò)編程基礎(chǔ)教程之Socket入門實例

    Java網(wǎng)絡(luò)編程基礎(chǔ)教程之Socket入門實例

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程基礎(chǔ)教程之Socket入門實例,本文講解了創(chuàng)建Socket、Socket發(fā)送數(shù)據(jù)、Socket讀取數(shù)據(jù)、關(guān)閉Socket等內(nèi)容,都是最基礎(chǔ)的知識點,需要的朋友可以參考下
    2014-09-09
  • Java中線程Thread的特點及使用

    Java中線程Thread的特點及使用

    這篇文章主要介紹了Java中線程的特點及使用,線程是進(jìn)程的組成部分,一個進(jìn)程可以擁有多個線程,而一個線程必須擁有一個父進(jìn)程,那么線程該如何使用,讓我們一起來看看吧
    2023-04-04
  • Java的MyBatis框架項目搭建與hellow world示例

    Java的MyBatis框架項目搭建與hellow world示例

    MyBatis框架為Java程序的數(shù)據(jù)庫操作帶來了很大的便利,這里我們就從最基礎(chǔ)的入手,來看一下Java的MyBatis框架項目搭建與hellow world示例,需要的朋友可以參考下
    2016-06-06
  • SpringBoot前后端接口對接常見錯誤小結(jié)

    SpringBoot前后端接口對接常見錯誤小結(jié)

    SpringBoot前后端接口對接工作時,經(jīng)常遇到請求500,400等問題,本文主要介紹了SpringBoot前后端接口對接常見錯誤小結(jié),感興趣的可以了解一下
    2022-01-01
  • Java多線程用法的實例詳解

    Java多線程用法的實例詳解

    這篇文章主要介紹了Java多線程用法的實例詳解的相關(guān)資料,希望通過本文大家能夠理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • 解決阿里云OSS使用URL無法訪問圖片的兩種方法

    解決阿里云OSS使用URL無法訪問圖片的兩種方法

    這篇文章主要介紹了解決阿里云OSS使用URL無法訪問圖片的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論

和硕县| 合肥市| 连江县| 桐庐县| 景宁| 江永县| 赣州市| 侯马市| 东光县| 邵武市| 和田市| 视频| 霞浦县| 贵德县| 宿松县| 舞阳县| 尼勒克县| 彭州市| 邯郸市| 平陆县| 望奎县| 弋阳县| 翼城县| 阿鲁科尔沁旗| 区。| 社会| 红河县| 葵青区| 五寨县| 岑巩县| 翁源县| 绥棱县| 久治县| 杨浦区| 勐海县| 河津市| 电白县| 武邑县| 上虞市| 宿州市| 宝兴县|