Java中 實現多線程成的三種方式(繼承,實現,匿名內部類)


------------------------------------------------------------------------------------------------------------    

   

 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     }

 

------------------------------------------------------------------------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM