建立執行緒的幾種方式

2021-10-01 11:34:48 字數 1175 閱讀 3715

thread,runnable,callable

runnable和callable的區別是,

(1) callable規定的方法是call(),runnable規定的方法是run().

(2) callable的任務執行後可返回值,而runnable的任務是不能返回值得

(3) call方法可以丟擲異常,run方法不可以

(4) 執行callable任務可以拿到乙個future物件,表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並檢索計算的結果。通過future物件可以了解任務執**況,可取消任務的執行,還可獲取執行結果。

通過實現runnable介面來建立thread執行緒:

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

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

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

通過繼承thread類來建立乙個執行緒

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

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

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

通過callable和future來建立thread執行緒

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

(2)建立callable實現類的例項,使用futuretask類來包裝callable物件,該futuretask物件封裝了該callable物件的call()方法的返回值。

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

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

使用執行緒池例如用executor框架

這下面有大佬的總結資料:

一般推薦採用實現介面的方式來建立多執行緒

建立執行緒的幾種方式

class a int operator int n void foo int x int main 6 lambda表示式 thread t7 a f,a,8,w 傳遞a的拷貝的成員函式給子執行緒 thread t8 a f,a,8,w 傳遞a的位址的成員函式給子執行緒 futurefu asyn...

建立執行緒的幾種方式

建立執行緒有四種方式 1.繼承thread類 public class mythread00 extends thread public static void main string args 2.實現runnable介面 public class mythread01 implements ru...

建立執行緒的方式 執行緒建立到底有幾種方式?

在網上搜尋執行緒建立的集中方式,大約都是多的三種或者四種,我們看下jdk的原始碼怎麼說的?原始碼中說的建立執行緒有兩種方式類thread和介面runable 網上第三種 實現callable介面,結合futuretask建立執行緒,這種方式我們檢視原始碼也可以看出它實際上也屬於實現runable介面...