------------------------------------------------------------------------------------------------------------
1 /** 第一種方式:繼承Thread類 2 3 * 1. 定義一個類,然后讓該類繼承Thread類 4 5 * 2. 重寫run方法 6 7 * 3. 創建定義的這個類的對象 8 9 * 4. 啟動線程 10 11 */ 12 13 //繼承Thread類 14 15 public class MyThread extends Thread{ 16 17 public MyThread() {} 18 19 public MyThread(String name) { 20 super(name); 21 } 22 23 //run方法中封裝的應該是要被線程執行的代碼 ,run方法中代碼的原則,一般存方的都是比較耗時的代碼 24 public void run (){ 25 26 for (int i = 0; i < 200; i++) { 27 28 System.out.println(Thread.currentThread().getName() + "---" + i); 29 } 30 } 31 } 32 33 //測試方法 34 35 private static void Test() { 36 37 // 創建對象 38 MyThread mt1 = new MyThread(); 39 MyThread mt2 = new MyThread(); 40 41 42 //啟動線程 43 // public void start()使該線程開始執行;Java 虛擬機調用該線程的 run 方法。 44 mt1.start(); 45 //mt1.start();// 線程的啟動只能是一次 46 mt2.start(); 47 48 }
------------------------------------------------------------------------------------------------------------
1 /** 第二種方式:實現Runnable接口 2 避免了單線程帶來的困擾 3 * (1): 創建一個類,讓該類實現Runnable接口 4 5 * (2): 重寫run方法 6 7 * (3): 創建該類的對象 8 9 * (4): 創建Thread類的對象,然后把3中的對象作為參數傳遞給Thread 10 11 * (5): 啟動線程 12 13 */ 14 15 //實現Runnable接口 16 17 public class MyThread2 implements Runnable { 18 19 public MyThread2() { 20 super(); 21 } 22 23 public void run() { 24 25 for(int x = 0 ; x < 200 ; x++){ 26 27 System.out.println(Thread.currentThread().getName() + "---" + x); 28 } 29 } 30 } 31 32 //測試方法 33 34 private static void Test2() { 35 36 // 創建MyThread的對象 37 MyThread2 mt = new MyThread2(); 38 // 創建Thread類的對象,然后把3中的對象作為參數傳遞給Thread 39 // public Thread(Runnable target) 40 Thread t1 = new Thread(mt,"張飛"); 41 Thread t2 = new Thread(mt,"關羽"); 42 Thread t3 = new Thread(mt,"劉備"); 43 // 啟動線程 44 t1.start() ; 45 t2.start() ; 46 t3.start() ; 47 }
------------------------------------------------------------------------------------------------------------
1 /** 第三種方式:使用匿名內部類的方式實現 2 很少見 3 * new 類名/接口名() { 4 5 * 方法重寫 ; 6 7 * } ; 8 9 */ 10 11 //測試方法 12 13 //匿名內部類 14 15 @Test 16 private static void Test3() { 17 18 new Thread() { 19 public void run() { 20 System.out.println("線程執行了。。。。。。。"); 21 } 22 }.start(); 23 }
------------------------------------------------------------------------------------------------------------