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

2021-10-07 17:54:06 字數 967 閱讀 4364

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

採用繼承thread類方式:

(1)優點:編寫簡單,如果需要訪問當前執行緒,無需使用thread.currentthread()方法,直接使用this,即可獲得當前執行緒。

(2)缺點:因為執行緒類已經繼承了thread類,所以不能再繼承其他的父類。

採用實現runnable介面方式:

(1)優點:執行緒類只是實現了runable介面,還可以繼承其他的類。在這種方式下,可以多個執行緒共享同乙個目標物件,所以非常適合多個相同執行緒來處理同乙份資源的情況,從而可以將cpu**和資料分開,形成清晰的模型,較好地體現了物件導向的思想。

(2)缺點:程式設計稍微複雜,如果需要訪問當前執行緒,必須使用thread.currentthread()方法。

2…currentthread和this的區別

①thread.currentthread表示當前**段正在被哪個執行緒呼叫的相關資訊。

②this表示的是當前物件,與thread.currentthread有很大的區別。

3.thread使用start和run方法啟動執行緒有什麼區別

1.start()方法來啟動執行緒,真正實現了多執行緒執行,這時無需等待run方法體bai**執行完畢而直接繼續執行下面的**:通過呼叫thread類的start()方法來啟動乙個執行緒,

這時此執行緒是處於就緒狀態,並沒有執行。然後通過此thread類呼叫方法run()來完成其執行操作的,這裡方法run()稱為執行緒體,它包含了要執行的這個執行緒的內容,run方

法執行結束,此執行緒終止,而cpu再執行其它執行緒,

2.run()方法當作普通方法的方式呼叫,程式還是要順序執行,還是要等待run方法體執行完畢後才可繼續執行下面的**:

而如果直接用run方法,這只是呼叫乙個方法而已,程式中依然只有主線程–這乙個執行緒,其程式執行路徑還是只有一條,這樣就沒有達到寫執行緒的目的。

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

1 繼承thread類 2.實現runnable介面 區別 採用繼承thread類 1 簡單,直接通過thread的構造方法建立執行緒,且訪問當前執行緒時,直接呼叫this.即可獲得當前執行緒。2 因為已經繼承thread類,所以不能繼承其他父類。3 若要兩個執行緒之間共享變數時,需要在宣告為sta...

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