黑馬程式設計師 多執行緒

2021-06-19 20:16:32 字數 2574 閱讀 8768

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

了解多執行緒

了解多執行緒,先了解概念:

什麼是程序。

程序:正在執行的應用程式。

那麼什麼是執行緒呢?

執行緒:應用程式的執行單元,執行路徑。

什麼是單執行緒?

單執行緒:顧名思義,乙個應用程式在執行的過程中只有一條執行路徑。

那麼什麼是多執行緒?

多執行緒:指的是乙個應用程式有多條執行路徑。

舉例:在生活中,很形象的例子譬如說是學校食堂。有多個視窗,意味著更多的吞吐量和更高的效率,若是只有乙個視窗,後果可能是一面是飯菜沒有如期賣完

會造成浪費,一面是部分師生還餓著肚子。而開闢多個視窗本質就是執行緒的一種體現。

多執行緒的意義:

多執行緒是為了同步完成多項任務,不是為了提高執行效率,而是為了提高資源使用效率來提高系統的效率。

執行緒是在同一時間需要完成多項任務的時候實現的。

多執行緒的實現

實現多執行緒有兩種方法
一是繼承thread類:
思路a:自定義類繼承thread類。

b:在自定義類中重寫run方法。

c:建立自定義類物件。

d:啟動執行緒。

//使用thread實現執行緒

class mythread extends thread

public void run()}}

public class threaddemo01

}

二是通過實現runnable介面。
為什麼會有這第二種方法呢?因為如果乙個類本身就有父類了,我還想實現多執行緒,通過繼承thread類就實現不了。 所有就有實現runnable介面的方式。
思路a:自定義類實現runnable介面。

b:重寫run()方法。

c:建立自定義類物件。

d:建立執行緒物件,把自定義類物件的作為構造引數傳遞。

e:啟動執行緒物件。

//使用runnable實現執行緒
class mythread implements runnable

public void run() }}

public class runnabledemo01

}

補充思路:通過runnable實現多執行緒,實現runnable介面的類必須使用thread類的例項才能建立執行緒。通過runnable介面建立執行緒分為兩步:

1. 將實現runnable介面的類例項化。

2. 建立乙個thread物件,並將第一步例項化後的物件作為引數傳入thread類的構造方法。

3. 最後通過thread類的start方法建立執行緒。

注意:執行緒的隨機性和延遲性,這些將會引發一些安全問題。
如何判斷是否有一些安全問題呢?
1  是否有共享資料。
2共享語句是否被多條語句操作。
3是否有多個執行緒在執行。
既然有安全問題,那麼如何解決呢?
第一種方法
1同步**塊
synchronized(鎖物件)
第二種方法
2同步方法
在方法上加同步關鍵字
鎖物件是this。
注意:靜態同步方法的鎖物件是當前類名.class。(當前的位元組碼檔案物件)
用多執行緒模擬買票的案例
public class tickets implements runnable}}

}}

public class test

}

start()和run()方法的區別:

run()僅僅是封裝了被執行緒執行的**。

start()可以啟動執行緒,並讓jvm自動呼叫run()方法

執行緒的生命週期:新建-就緒-(阻塞)-執行--死亡,五個階段。
當用new 建立完乙個執行緒物件後,該執行緒處於新建狀態

當執行緒物件呼叫了start()後,該執行緒處於就緒狀態

如果處於就緒狀態的執行緒獲得cpu時間片,開始執行run方法的執行緒執行體,該執行緒處於執行狀態

如果執行緒呼叫了sleep()或者呼叫了乙個阻塞式io方法等,該執行緒處於阻塞狀態

如果執行緒的run()執行完成或者丟擲乙個未捕獲的異常等原因,該執行緒處於死亡狀態

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

詳細請檢視:

黑馬程式設計師 多執行緒

windows phone 7手機開發 net培訓 期待與您交流!一 程序與執行緒 l 程序 乙個執行的程式就是乙個程序,程序包括執行中的程式和程式需要用到的記憶體和系統資源 乙個程序至少有乙個執行緒,乙個程序中多個執行緒可以併發執行 l 執行緒 程式中的乙個執行流,每個執行緒都有自己的專有暫存器 ...

黑馬程式設計師 多執行緒

asp.net android io開發 net培訓 期待與您交流!執行緒與程序的關係 乙個程式就相當於乙個程序 乙個程序至少有乙個執行緒 同乙個程序中的多個執行緒之間可以 併發 執行 執行緒 1 乙個執行緒一次只能完成乙個任務 2 多執行緒方法重入 cpu是不斷的在多個執行緒之間來回切換執行的 3...

黑馬程式設計師 多執行緒

asp.net android ios開發 net培訓 期待與您交流!多執行緒為什麼要用多執行緒?1 讓計算機 同時 做多件事情,節約時間。2 後台執行程式,提高程式的執行效率,也不會使主介面出現無響應的情況。3 多執行緒可以讓乙個程式 同時 處理多個事情。4 計算機cpu 大部分時間處於空閒狀態,...