Java建立線程的三種方式

來源:互聯網
上載者:User

標籤:子線程   tar   傳回值   通過   面向   log   callable   div   thread   

一、繼承Thread類建立線程類

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

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

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

二、通過Runnable介面建立線程類

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

(2)建立 Runnable實作類別的執行個體,並依此執行個體作為Thread的target來建立Thread對象,該Thread對象才是真正的線程對象。

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

三、通過Callable和Future建立線程

(1)建立Callable介面的實作類別,並實現call()方法,該call()方法將作為線程執行體,並且有傳回值。

(2)建立Callable實作類別的執行個體,使用FutureTask類來封裝Callable對象,該FutureTask對象封裝了該Callable對象的call()方法的傳回值。

(3)使用FutureTask對象作為Thread對象的target建立並啟動新線程。

(4)調用FutureTask對象的get()方法來獲得子線程執行結束後的傳回值

 

採用實現Runnable、Callable介面的方式創見多線程時,優勢是:

線程類只是實現了Runnable介面或Callable介面,還可以繼承其他類。

線程任務和線程對象分離,多個線程可以共用同一個target對象,所以非常適合多個相同線程來處理同一份資源的情況,從而可以將CPU、代碼和資料分開,形成清晰的模型,較好地體現了物件導向的思想。

劣勢是:

編程稍微複雜,如果要訪問當前線程,則必須使用Thread.currentThread()方法。

使用繼承Thread類的方式建立多線程時優勢是:

編寫簡單,如果需要訪問當前線程,則無需使用Thread.currentThread()方法,直接使用this即可獲得當前線程。

劣勢是:

線程類已經繼承了Thread類,所以不能再繼承其他父類

Java建立線程的三種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.