標籤: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中的多線程