歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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

   /**  第一種方式:繼承Thread類

    *            1. 定義一個類,然後讓該類繼承Thread類

    *            2. 重寫run方法

    *            3. 創建定義的這個類的對象

    *            4. 啟動線程

    */

 //繼承Thread類

  public class MyThread extends Thread{
   
    public MyThread() {}

    public MyThread(String name) {
        super(name);
    }

    //run方法中封裝的應該是要被線程執行的代碼 ,run方法中代碼的原則,一般存方的都是比較耗時的代碼
    public void run (){
       
        for (int i = 0; i < 200; i++) {
           
            System.out.println(Thread.currentThread().getName() + "---" + i);
        }
    } 
}

  //測試方法

  private static void Test() {

   // 創建對象
        MyThread mt1 = new MyThread();
        MyThread mt2 = new MyThread();


        //啟動線程
        // public void start()使該線程開始執行;Java 虛擬機調用該線程的 run 方法。
        mt1.start();
        //mt1.start();// 線程的啟動只能是一次
        mt2.start();

  }

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

    /**  第二種方式:實現Runnable接口

     *    (1): 創建一個類,讓該類實現Runnable接口

     *    (2): 重寫run方法

     *    (3): 創建該類的對象

     *    (4): 創建Thread類的對象,然後把3中的對象作為參數傳遞給Thread

     *    (5): 啟動線程

     */

  //實現Runnable接口

  public class MyThread2 implements Runnable {
   
   public MyThread2() {
        super();
      }

      public void run() {
       
          for(int x = 0 ; x < 200 ; x++){
           
            System.out.println(Thread.currentThread().getName() + "---" + x);
        }
    }
}

  //測試方法

    private static void Test2() {

     // 創建MyThread的對象
        MyThread2 mt = new MyThread2();
        // 創建Thread類的對象,然後把3中的對象作為參數傳遞給Thread
        // public Thread(Runnable target)
        Thread t1 = new Thread(mt,"張飛");
        Thread t2 = new Thread(mt,"關羽");
        Thread t3 = new Thread(mt,"劉備");
        // 啟動線程
        t1.start() ;
        t2.start() ;
        t3.start() ;
    }

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

 

    /**  第三種方式:使用匿名內部類的方式實現

     *    new 類名/接口名() {     

     *      方法重寫 ;

     *    } ;

     */

 //測試方法

 //匿名內部類

    private static void Test3() {

    new Thread() {
          public void run() {
                System.out.println("線程執行了。。。。。。。");
            }
        }.start();
    }

Copyright © Linux教程網 All Rights Reserved