首先Thread類中run()和start()方法的區別如下:
run()方法:在本線程內調用該Runnable對象的run()方法,可以重復多次調用;
start()方法:啟動一個線程,調用該Runnable對象的run()方法,不能多次啟動一個線程;
1 public class Test implements Runnable{ 2 public static void main(String[] args) { 3 Test T = new Test(); 4 Test1 T1 = new Test1(); 5 6 Thread tt = new Thread(T, "t"); 7 Thread tt1 = new Thread(T1, "t1"); 8 9 tt.run(); 10 System.out.println("aaaaaa"); 11 tt1.run(); 12 System.out.println("bbbbbb"); 13 } 14 @Override 15 public void run() { 16 for(int i = 0 ; i < 10 ; i++){ 17 System.out.println("第一個" + i); 18 } 19 } 20 } 21 class Test1 implements Runnable{ 22 23 @Override 24 public void run() { 25 for(int i = 0 ; i < 10 ; i++){ 26 System.out.println("第二個" + i); 27 } 28 } 29 }
運行結果:
第一個0
第一個1
第一個2
第一個3
第一個4
第一個5
第一個6
第一個7
第一個8
第一個9
aaaaaa
第二個0
第二個1
第二個2
第二個3
第二個4
第二個5
第二個6
第二個7
第二個8
第二個9
bbbbbb
以上代碼顯示:run方法可以創建一個線程,但是相當於同步的方式,沒有多線程的存在。
只有調用start方法才是交給jvm管理,才是多線程。