1. 程式人生 > >【java】執行緒的建立與使用

【java】執行緒的建立與使用

一、執行緒的簡介

執行緒是程式執行流的最小單元,一個程序可以包括多個執行緒,各個執行緒之間可以並行,也可以互相影響。每一個程序都至少有一個執行緒。

二、建立並使用執行緒

在java中,執行緒(Thread)是繼承自Object,在java.lang.Thread中被宣告。想要使用程序的話,首先要保證類繼承了Thread類。

建立並使用執行緒可以有多種方法。

1.直接建立一個Thread例項

Thread thread = new Thread();
//要使得程序開始,使用thread.start();

然而程序預設的run()方法為空,因此此時,由於沒有重寫thread.run()方法,程序被建立之後便會靜默退出,什麼也沒有做。

要想讓程序執行相應的操作,就要重寫thread.run();

Thread thread = new Thread() {

    @Override

    publicvoid run() {

       //重寫run方法,並且輸出Thread1 act!

       System.out.println("Thread1 act!");

    }

};

thread.start();//程序開始

輸出結果為:

Thread1 act!

該方法是最簡單的建立程序的辦法,不需要額外的類檔案。

2.自定義程序類

建立一個類檔案,並且使其繼承Thread類,隨後重寫run方法即可。

publicclassTestThread extendsThread{

   

    @Override

    publicvoid run() {

       System.out.println("Thread2 act!");

    }

}

在建立該程序的時候,例項化該程序物件,並且使用start即可。

TestThread testThread = new TestThread();

testThread.start();

輸出結果為(包含之前的程式碼執行):

Thread1 act!

Thread2 act!

該方法可以自定義各種程序類,當需要讓多個程序執行不同操作的時候,這種方法可以大大減少工作量。

3.使用Runnable介面

Runnable是在java.lang.Runnable中被宣告的介面,可以通過自定義類來實現它。

同樣,需要建立程序時例項化一個Thread物件,但是這一次,還要傳入一個Runnable介面的實現類。

publicclassTestRunnable implements Runnable{

 

    @Override

    publicvoid run() {

       System.out.println("Thread3 act!");

    }

}

同樣的,重寫run方法。

在建立程序時,將自定義的Runnable類傳入。

Thread thread3 = new Thread(new TestRunnable());

thread3.start();


輸出內容為(包括之前的程式碼執行):

Thread1 act!

Thread2 act!

Thread3 act!

該方法避免了建立多個程序類,也同樣能夠實現多執行緒執行不同的操作。相比前者,因為自定義的類是實現了Runnable,因此仍然可以從其他類繼承,從而使得靈活性更加高。

三、使用需知

1.不能夠直接呼叫run()方法

建立執行緒後,使用start()方法就可以使得該執行緒開始,而run()方法也會被自動呼叫。

但是,倘若直接呼叫run()方法,雖然也會進行相應的操作,但是實際上是在當前的執行緒內進行的,並沒有使用新建立的執行緒。

2.執行緒的結束

線上程的run()方法執行完之後,執行緒便會自動退出,每個執行緒的run方法一般只會執行一次,而不是一直反覆呼叫。