建立執行緒的兩種方式以及區別

2021-08-08 17:09:56 字數 746 閱讀 8489

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...