Java實現多執行緒詳解一 ( 繼承Thread方式 )

冷風DMW發表於2020-11-14

之前有簡單的介紹過多執行緒的幾種實現方式,那麼我們現在開始寫幾篇文章詳細去介紹一下多執行緒的實現方式和一些原理,今天先來介紹一下我們學習多執行緒的第一種方式,我們使用繼承Thread類來實現!

話不多說,直接上程式碼!

繼承Thread類基礎程式碼

// 首先我們建立一個類來繼承Thread類
public class MyThread extends Thread{
	// 然後我們需要重寫run方法(非常重要,run方法的方法體中是我們真正執行的程式碼)
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
        }
    }
}

class MyThreadTest {
    public static void main(String[] args) {
    	// 建立MyThread物件,呼叫start()方法,這裡要知道start方法的作用! 
    	// start方法的作用有兩個! 第一個是啟動該執行緒,第二個是呼叫run()方法
        MyThread myThread = new MyThread();
        myThread.start();
    }
}

上面的程式碼中我們其實已經說明了使用Thread類實現多執行緒的步驟
步驟解釋:
①:繼承Thread類
②:重寫run方法
③:建立繼承Thread類的例項物件
④:呼叫該物件的start方法
// start方法和run方法都繼承於Thread類

設定多執行緒名字及多個執行緒執行

那麼我們現在來實現一下多個執行緒執行的程式碼!
這之前我們先學習兩個基礎的方法
首先我們需要給執行緒修改一下執行緒名,方便我們區分是否使用了多執行緒
getName和setName使用方式:

MyThread myThread = new MyThread();
myThread.getName();
myThread.setName("執行緒1");

這裡還有一個小技巧是獲取當前執行緒的方法,我們使用Thread.currentThread() 因為這是被static修飾的靜態方法,所以我們可以直接使用Thread類去呼叫
那麼我們先來真正去執行多個執行緒

public class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "" + i);
        }
    }
}

class MyThreadTest {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.setName("執行緒1-");
        myThread.start();
        MyThread myThread1 = new MyThread();
        myThread1.setName("執行緒2-");
        myThread1.start();
    }
}

這邊我們還是和上面的基本一致,只不過發現我們建立了兩個MyThread物件,因為如果我們使用同一個MyThread物件去呼叫start方法的話,則會報出IllegalThreadStateException異常,大致意思就是不能在一個Thread中多次呼叫start方法,所以我們需要建立兩個物件去呼叫,我們也給兩個物件設定了不同的名字,我們來看一下結果:
在這裡插入圖片描述
那到這裡就結束了,我們下次學習第二種實現方式,實現Runnable介面的實現方式

如有錯誤歡迎指出,感謝觀看

相關文章