天天看點

深入Java線程管理(一):線程的實作方式

java的線程實作方式一共有三種,繼承thread、實作runable接口,實作callable接口。不過實作runnable接口與實作callable接口的方式基本相同,隻是callable接口裡定義的方法有傳回值,可以聲明抛出異常而已。

一、 繼承thread類建立線程類

1) 定義thread類的子類,并重寫該類的run()方法,該run()方法的方法體就代表了線程需要完成的任務。

2) 建立thread子類的執行個體,即建立了線程對象。

3) 調用線程對象的start()方法來啟動該線程。

這裡我們需要注意的是,啟動線程必須通過start()方法,而不是直接調用run()方法。

除此以外,上面程式中海油如下兩個方法:

· thread.currentthread(): currentthread()是thread類的靜态方法,該方法總是傳回目前正在執行的線程對象。

· getname(): 該方法是thread類的執行個體方法,該方法傳回調用該方法的線程名字。

二、 實作runnable接口建立線程類

1)定義runnable接口的實作類,并重寫該接口的run()方法,該run()方法的方法體同樣是該線程的線程執行體。

2)建立runnable實作類的執行個體,并以此執行個體作為thread的target來建立thread對象,該thread對象才是真正的線程對象。

3)調用線程對象的start()方法來啟動該線程。

對比firstthread中的run()方法和secondthread中的run()方法,可以發現繼承thread類來擷取目前線程對象比較簡單,直接可以使用this就可以了; 但通過實作runnable接口來擷取目前線程,就必須使用thread.currentthread()方法。

三、 使用callable和future建立線程

callable接口提供了一個call()方法,作為線程執行體,但是call()方法比run方法更加強大。

· call()方法可以有傳回值。

· call()方法可以聲明抛出異常。

深入Java線程管理(一):線程的實作方式
深入Java線程管理(一):線程的實作方式