1. 程式人生 > 程式設計 >簡單瞭解Java建立執行緒兩種方法

簡單瞭解Java建立執行緒兩種方法

這篇文章主要介紹了簡單瞭解Java建立執行緒兩種方法,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Java實現並啟動執行緒有兩種方法

1、寫一個類繼承自Thread類,重寫run方法。用start方法啟動執行緒
2、寫一個類實現Runnable介面,實現run方法。用new Thread(Runnable target).start()方法來啟動

注意:start方法不是立即執行多執行緒,而是使得該執行緒變為就緒態(Runnable)

1.通過擴充套件Thread類來建立執行緒

(1)定義Thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。

(2)建立Thread子類的例項,即建立了執行緒物件。

(3)呼叫執行緒物件的start()方法來啟動該執行緒。

public class MutliThreadDemo {
  public static void main(String[] args) {
    
    //建立Thread子類的例項,即建立了執行緒物件
    MutliTread mt1 = new MutliTread("Thread");
      
    //不立即執行多執行緒程式碼,而是使得該執行緒變為就緒態(Runnable)
    mt1.start();
  }  
}

//通過擴充套件Thread類來建立執行緒
class MutliTread extends Thread{
  
  public MutliTread(String name) {
    this.setName(name);
    //或super(name)
  }
  public void run() {
    for(int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + ":" + i);
    }  
  }
}

2.通過Runnable介面建立執行緒

(1)定義runnable介面的實現類,並實現該介面的run()方法,該run()方法的方法體同樣是該執行緒的執行緒執行體。

(2)建立 Runnable實現類的例項,並依此例項作為Thread的target來建立Thread物件,該Thread物件才是真正的執行緒物件。

(3)呼叫執行緒物件的start()方法來啟動該執行緒。

public class MutliThreadDemo3 {
  
  public static void main(String[] args) {
     
    //建立一個Runnable介面實現類
    MutliTread3 m = new MutliTread3();
    
    //例項化執行緒物件
    Thread t1 = new Thread(m,"甲");
    Thread t2 = new Thread(m,"乙");
    Thread t3 = new Thread(m,"丙");
    t1.start();
    t2.start();
    t3.start();
  }  
}

class MutliTread3 implements Runnable{
  
  public void run() {
    for(int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + ":" + i);
    }  
  }
}

當然第二種方法也可通過匿名內部類或lambda表示式實現,會更簡潔。以下通過Lambda表示式實現run方法:

public class MutliThreadDemo3 {
  
  public static void main(String[] args) {
    
    Runnable r = () -> {  
      for(int i = 0; i < 10; i++) {
        System.out.println(Thread.currentThread().getName() + ":" + i);
      }  
    };
    
    //例項化執行緒物件
    Thread t1 = new Thread(r,"甲");
    Thread t2 = new Thread(r,"乙");
    Thread t3 = new Thread(r,"丙");
    t1.start();
    t2.start();
    t3.start();
  }  
}

注:以上三種方式(本質上是兩種)建立的三個執行緒其實是互相獨立的

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。