多執行緒基礎之建立執行緒的三種方式

2022-09-13 01:00:18 字數 1389 閱讀 6132

在j**a平台中建立執行緒就是建立乙個thread類或者其子類的例項。每個執行緒的任務處理邏輯都在run()方法中實現,它在j**a虛擬機器中由相應的執行緒直接呼叫。

執行乙個執行緒就是讓j**a虛擬機器執行該執行緒的run()方法。

啟動執行緒需要呼叫thread類的strat()方法。

下面**實現建立執行緒.

public static void main(string args) }

class mythread extends thread }}

public

class

public

static

void

main(string args)

}

class

mythread2 implements runnable

}

a. 建立callable介面的實現類,並實現call()方法;

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

c. 使用futuretask物件作為thread物件的target建立並啟動新執行緒;

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

public

class callablethreadtest implements callable

} try

catch

(interruptedexception e)

catch

(executionexception e)

} @override

public

integer call() throws exception

return

i;

} }

不管是哪種方式,當該執行緒的run方法執行時,執行緒就結束,所佔的資源會被垃圾**器**。我們不能通過start方法再一次呼叫,否則會丟擲illegalthreadexcepton異常.

乙個執行緒就是乙個物件,建立時會為其分配記憶體空間,j**a平台的執行緒還會為其建立乙個核心執行緒,相對來說成本較高。

第二種和第三種基本很類似,只是實現callable可以有返回值。

從物件導向程式設計角度:第一種是一種基於繼承(inheritance)的技術。第二,三種是一種基於(composition)的技術,由於組合相對繼承來說,類與類之間的耦合程度較低,更靈活.

從物件共享的角度:第二種方式可能導致多個執行緒例項共享乙個runable例項,可能涉及一些執行緒安全方面的因素.

從物件建立成本 : 建立乙個執行緒例項比建立乙個runable例項成本相對來說高.

建立多執行緒的三種方式

首先需要理解清楚程式 程序 執行緒 程式 即靜態的 塊 程序 執行中的程序 執行緒 程序的進一部細分,程式的一條執行路徑 第一種 建立乙個類繼承thread,並重寫run 方法 第一種方法 建立乙個繼承thread的子類 class subthread extends thread public c...

執行緒 三種方式 建立執行緒

第一種 1 模擬龜兔賽跑 繼承thread 重寫run 執行緒體 2 使用執行緒 建立子類物件 物件.strat 執行緒啟動 author administrator public class rabbits extends thread class tortoise extends thread ...

JAVA多執行緒(一) 建立執行緒的三種方式

程式 program,是乙個靜態概念 指令集 程序 process,是乙個動態概念 由作業系統排程程式 執行緒 thread,是程序中乙個 單一的連續控制流程 在程序內多條執行路徑 是乙個輕量級的執行緒 一 繼承至thread,重寫run 方法 使用執行緒 1.建立子類物件 2.呼叫start 方法...