多執行緒的建立 兩種方式以及使用建議

西瓜連發表於2020-11-22

多執行緒的建立

方式一、繼承於Thread類

步驟

  • 1.建立一個繼承於 Thread類的子類
  • 2.重寫 Thread 類階run()-ー>將此執行緒放行的操作宣告在run()中
  • 3.建立 MyThread類的子類的物件
  • 4.通過此物件調 start()

程式碼

//1.建立一個繼承於 Thread類的子類
class MyThread extends Thread{
//2.重寫 Thread 類階run()-ー>將此執行緒放行的操作宣告在run()中
    @Override
    public void run() {
        for (int i = 0 ; i<10;i++){
            System.out.println(Thread.currentThread().getName()+i);
        }//輸出0-9的數
    }
}

public class ThreadTest {
    public static void main(String[] args) {
//        3.建立 MyThread類的子類的物件
        MyThread t1 =new MyThread();
//        4.通過此物件調 start()
        t1.start();
        }
}

方式二、實現 Runnable介面

###步驟

  • 1.建立一個實現了 Runnable介面的類
  • 2.實現類去實現 Runnable中的抽象方法:run()
  • 3.建立實現類的物件
  • 4.將此物件作為引數傳遞到 Thread類的的構造器中,建立 Thread類的物件
  • 5.通過 Thread 類的物件呼叫 start()

程式碼

//1.建立一個實現了 Runnable介面的類
class Thread2 implements Runnable {
//2.實現類去實現 Runnable中的抽象方法:run()
   @Override
   public void run() {

           System.out.println(Thread.currentThread().getName() + 1);

   }
}

public class CreatThread {
   public static void main(String[] args) {
//3.建立實現類的物件
       Thread2 t2 = new Thread2();
//4.將此物件作為引數傳遞到 Thread類的的構造器中,建立 Thread類的物件
       Thread c1 = new Thread(t2);
//5.通過 Thread 類的物件呼叫 start():
// start的作用1⃣️啟動執行緒 2⃣️呼叫當前執行緒的run()-->呼叫了 Runnable型別的 target的run()
       c1.start();
   }
}

兩者的聯絡與使用技巧

開發中:優先選擇:實現Runnable介面的方式
原因:

  • 1.實現的方式沒有類的單繼承的侷限性
  • 2.實現的方式更適臺來處理多個執行緒有共享資料的情況。

聯絡: public class Thread implements Runnable
即Thread 也用Runnable 介面實現

相同點:兩種方式都需要重寫run(),將執行緒要執行的邏輯宣告在run()中。

相關文章