1
.繼承thread類
2.實現runnable介面
區別:採用繼承thread類:
(1)**簡單,直接通過thread的構造方法建立執行緒,且訪問當前執行緒時,直接呼叫this.即可獲得當前執行緒。
(2)因為已經繼承thread類,所以不能繼承其他父類。
(3)若要兩個執行緒之間共享變數時,需要在宣告為static變數。
採用實現runnable介面:
(1)執行緒只是實現了runnable介面,還可以繼承其他類和實現其他介面;
(2)可以多個執行緒之間共享同乙個目標物件,非常適合多個執行緒處理同乙份資源的情況;
(3)**稍微複雜一些,若要訪問當前執行緒,必須使用thread.currentthread()方法。
當沒有宣告static變數時:
runnable可以實現資源共享但是thread不能,原因:
1.因為乙個執行緒只能啟動一次,通過thread實現執行緒時,執行緒和執行緒所要執行的任務是**在一起的。也就使得乙個任務只能 啟動乙個執行緒,不同的執行緒執行的任務是不相同的,所以沒有必要,也不能讓兩個執行緒共享彼此任務中的資源。
2.乙個任務可以啟動多個執行緒,通過runnable方式實現的執行緒,實際是開闢乙個執行緒,將任務傳遞進去,由此執行緒執行。可以 例項化多個 thread物件,將同一任務傳遞進去,也就是乙個任務可以啟動多個執行緒來執行它。這些執行緒執行的是同乙個任 務,所以他們的資源是共享。
建立執行緒的兩種方式及區別
1.建立執行緒的兩種方式及區別 採用繼承thread類方式 1 優點 編寫簡單,如果需要訪問當前執行緒,無需使用thread.currentthread 方法,直接使用this,即可獲得當前執行緒。2 缺點 因為執行緒類已經繼承了thread類,所以不能再繼承其他的父類。採用實現runnable介面...
Qt建立執行緒兩種方式的區別
使用qt建立執行緒有兩種方式,方式a使用movetothread,方式b是直接繼承qthread。差異主要在於方式a的槽函式將會在新執行緒中執行,而方式b的槽函式在舊執行緒中執行。結論如下 ps 舊執行緒在這裡指主線程,而新執行緒指qthread建立出的執行緒。相同點 不同點 綜上 使用方式b是需要...
執行緒建立的兩種方式
建立執行緒的兩種方式 1.繼承thread並重寫方法,在run方法中定義執行緒要執行的任務 class mythread extends thread public class threaddemo1 2.實現runable介面並重寫run方法 class myrunnable implements...