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()方法可以聲明抛出異常。
