建立執行緒的3種方式

2021-09-01 12:44:45 字數 2427 閱讀 4604

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

因此把run()方法稱為執行體。

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

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

public class mythread extends thread

private void dosomething()

}

public class newthread 

private static void dosomething()

}

我是乙個執行緒中的方法

我是乙個執行緒中的方法

我是乙個執行緒中的方法

newthread++++++++乙個執行緒中的

newthread++++++++乙個執行緒中的

newthread++++++++乙個執行緒中的

在main()方法裡建立乙個mythread物件,呼叫該物件的start()方法,start()方法會通過對系統底層的一系列操作,建立出乙個相應的執行緒,與當前執行緒併發執行。如果直接呼叫run()方法,程式將執行完run()方法後才會執行main()方法中後面的**,這樣就是單執行緒執行而不是多執行緒併發執行了。

二、通過runnable介面建立執行緒類

(1)定義runnable介面的實現類,並重寫該介面的run()方法,該run()方法的方法體

同樣是該執行緒的執行緒執行體。

(2)建立 runnable實現類的例項,並依此例項作為thread的target來建立thread物件,

該thread物件才是真正的執行緒物件。(不同的是,實現runnable介面的類中沒有

start()方法,所以要用thread構造個方法開啟執行緒)

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

public class runnablethread implements runnable 

private void dosomething()

}

public class runnablenewthread 

private static void dolinesomething()

}

(1)建立callable介面的實現類,並實現call()方法,該call()方法將作為執行緒執行體,並且有返回值。

(2)建立callable實現類的例項,使用futuretask類來包裝callable物件,該futuretask物件封裝了

該callable物件的call()方法的返回值。

(3)使用futuretask物件作為thread物件的target建立並啟動新執行緒。

(4)呼叫futuretask物件的get()方法來獲得子執行緒執行結束後的返回值

public class callablethread implements callable

private void dosomething()

}

public class newthread  catch (interruptedexception | executionexception e) 	} 

private static void donewsomething()

}

首先建立callable介面的實現類callablethread,實現call()方法,並且有返回值。

callable介面是乙個帶泛型的介面,泛型的型別就是執行緒返回值的型別。

實現callable介面中的call()方法,方法的返回型別與泛型的型別相同。

callable不能直接獲取返回值,需要用futuretask在外部封裝一下再獲取返回值

採用實現runnable、callable介面的方式創見多執行緒時,優勢是:

執行緒類只是實現了runnable介面或callable介面,還可以繼承其他類。

在這種方式下,多個執行緒可以共享同乙個target物件,所以非常適合多個相同執行緒來處理同乙份資源的情況,從而可以將cpu、**和資料分開,形成清晰的模型,較好地體現了物件導向的思想。

劣勢是:

程式設計稍微複雜,如果要訪問當前執行緒,則必須使用thread.currentthread()方法。

使用繼承thread類的方式建立多執行緒時優勢是:

編寫簡單,如果需要訪問當前執行緒,則無需使用thread.currentthread()方法,直接使用this即可獲得當前執行緒。

劣勢是:

執行緒類已經繼承了thread類,所以不能再繼承其他父類。

執行緒的五種建立方式

執行緒的五種建立方式 1 繼承thread類,重寫run 方法,呼叫start 方法啟動執行緒public class testthread1 extends thread public static void main string args 2 實現runnable介面,重寫run 方法,建立r...

建立執行緒的4種方式

建立執行緒的四種方式 一 繼承thread類 繼承thread類建立執行緒的步驟為 1 建立乙個類繼承thread類,重寫run 方法,將所要完成的任務 寫進run 方法中 2 建立thread類的子類的物件 3 呼叫該物件的start 方法,該start 方法表示先開啟執行緒,然後呼叫run 方法...

執行緒通訊 3種方式

一 傳統執行緒通訊 synchronized wait notify object類的wait notify notifyall 三個方法必須由同步監視器物件來呼叫,分兩種情況 a 同步方法,該類預設例項 this 就是同步監視器,可以在同步方法中可以直接呼叫 b 同步 塊,同步監視器是synchr...