Java中的多線程

來源:互聯網
上載者:User

標籤:view   代碼   ima   adt   oid   xtend   多進程   open   sed   

一.概念及特點

    1.概念

          進程:電腦啟動並執行應用程式。(多進程作用:提高CPU的使用率,不提高速度);

          線程;一個進程中的執行情境,一個進程可以包多個進程。(多線程作用:提高應用程式的使用率,不提高速度)。

    2.記憶體特點

          進程和進程之間的記憶體是獨立的;

          線程和線程共用“堆記憶體的方法區記憶體”,棧記憶體是獨立的,一個線程一個棧。

    3.java程式的運行原理

         Java命令啟動Java虛擬機器,啟動JVM,等同於啟動了一個應用程式,、表示啟動了一個進程,該進程會自動啟動一個“主線程”,然後主線程去調用某個類的main方法,所 以          main方法運行在主線程中。

二.線程的建立和啟動

    1.實現多線程的第一種方式: 

         第一步: 繼承Java.lang.Thread

         第二步;重寫run方法

例:

 1 class  Threadtest01 2 { 3     public static void main(String[] args)   //main方法在主線程 4     { 5         //1.建立線程 6         Thread t = new p(); 7         //2.啟動線程 8         t.start();      /*啟動t線程,執行後,t線程瞬間結束,JVM再分配一個新的棧給t線程 9                           run方法不需要手動調用,系統線程啟動之後自動調用run方法。*/10     11        for(int i=0;i<100;i++)   //在主線程中運行12         {13            System.out.println("main....."+i);14         }15     }16 }17 /*18    在多線程中,main方法結束後只是主線程蹤沒有方法棧幀了,但19    其他線程中或者其他棧中還有棧幀,main方法結束,程式可能還在運行20 */21 22 //3.定義一個線程23 class p extends Thread24 {25     //重寫run方法26     public void run ()27     {28          for(int i=0;i<100;i++)29         {30            System.out.println("run...."+i);31         }32     }33 }34 /*35 運行部分結果如下:36 main.....037 main.....138 main.....239 run....040 main.....341 run....142 main.....443 run....244 main.....545 run....346 main.....647 run....448 main.....749 run....550 main.....851 run....652 */
View Code

上述代碼的圖解如下:

     2.實現多線程的第二種方式:

           第一步:寫一個實作類別java,lang.Runnable;介面

          第二步:實現run方法

     例:

 1 package test; 2  3 class Main  4 { 5     public static void main(String[] args)  6     { 7         //建立線程 8         Thread t = new Thread(new p()); 9         //啟動線程10         t.start();11         for(int i = 0;i<100;i++)12               System.out.println("mian..."+i);13         14     }15 }16 //優先,一個類實現介面之外保留了類的繼承17 class p implements Runnable18 {19     public void run()20     {21         for(int i = 0;i<100;i++)22           System.out.println("run..."+i);23     }24 }25 /*26  * 部分運行結果:27  * run...828 mian...1029 run...930 mian...1131 run...1032 mian...1233 run...1134 mian...1335 run...1236  */
View Code

 

Java中的多線程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.