1.進程是應用程序在內存總分配的空間。(正在運行中的程序)多線程
2.線程是進程中負責程序執行的執行單元、執行路徑。jvm
3.一個進程中至少有一個線程在負責進程的運行。this
4.一個進程中有多個線程在運行的程序,爲多線程程序。spa
5.多線程技術是爲了解決多部分代碼同時執行。線程
6.多線程的優勢是合理的使用資源。code
1.jvm中的多線程有不少,其中有負責定義代碼運行的線程(這個從main方法開始執行的主線程),也有垃圾回收的線程(由於CPU的切換的不肯定因此不定時執行。或者達到某個條件下執行)。對象
2.多線程的運行的根據CPU的切換完成的,也就是說怎麼切換CPU說了算,因此多線程運行是隨機的(CPU快速切換形成的)。blog
3.每次運行結果不必定相同,由於隨機性形成的。繼承
4.沒一個線程都有運行的代碼內容。這個稱爲線程的任務。建立一個線程就是爲了去運行指定的任務代碼。進程
1.繼承Thread類.
2.覆蓋run( )方法。
3.建立子類對象、建立子類線程。
4.調用Thread類中的start( )方法,來執行線程。
start( )開啓線程後,都會執行run方法。說明run( )方法中存儲的是線程要運行的代碼。因此自定義線程的任務代碼都存儲在run( )方法中。
調用start會開啓線程,讓開啓的線程去執行run( )方法中的線程任務。
直接調用run方法,線程並未開啓,去執行run方法的只有主線程。
1 //繼承多線程方法Thread 2 class Demo extends Thread 3 { 4 private String name; 5 Demo(String name) 6 { 7 this.name = name; 8 } 9 //重寫run( )方法 10 public void run() 11 { 12 show(); 13 } 14 //須要執行的show( )方法 15 public void show() 16 { 17 for (int x=1;x<=10;x++) 18 { 19 System.out.println(name+"x ="+x); 20 } 21 } 22 } 23 24 class ThreadDemo 25 { 26 public static void main(String[] args) 27 { 28 Demo d1 = new Demo("xianghong"); 29 Demo d2 = new Demo("xiaoming"); 30 //開啓線程,調用run( )方法 31 d1.start(); 32 d2.start(); 33 //須要執行的主線程 34 for (int x=1; x<=10; x++) 35 { 36 System.out.println("main......"+x); 37 } 38 } 39 }
1 //繼承多線程方法Thread 2 class Demo extends Thread 3 { 4 private String name; 5 Demo(String name) 6 { 7 this.name = name; 8 } 9 //重寫run( )方法 10 public void run() 11 { 12 show(); 13 } 14 //須要執行的show( )方法 15 public void show() 16 { 17 for (int x=1;x<=10;x++) 18 { 19 //getName()顯示的是默認的名稱 20 //System.out.println(getName()+"..."+name+"x ="+x); 21 //Thread.currentThread().getName()當前正在運行線程的名稱 22 System.out.println(Thread.currentThread().getName()+"..."+name+"x ="+x); 23 } 24 } 25 } 26 27 class ThreadDemo 28 { 29 public static void main(String[] args) 30 { 31 Demo d1 = new Demo("xianghong"); 32 Demo d2 = new Demo("xiaoming"); 33 //開啓線程,調用run( )方法 34 d1.start(); 35 d2.start(); 36 //須要執行的主線程 37 for (int x=1; x<=10; x++) 38 { 39 System.out.println(Thread.currentThread().getName()+"......"+x); 40 } 41 } 42 }