【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方法一般只會執行一次,而不是一直反覆呼叫。