多執行緒的總結

2021-09-22 20:21:08 字數 797 閱讀 3133

• 多執行緒:指的是這個程式(乙個程序)執行時產生了不止乙個執行緒

• 並行與併發:

o 並行:多個cpu例項或者多台機器同時執行一段處理邏輯,是真正的同時。

o 併發:通過cpu排程演算法,讓使用者看上去同時執行,實際上從cpu操作層面不是真正的同時。併發往往在場景中有公用的資源,那麼針對這個公用的資源往往產生瓶頸,我們會用tps或者qps來反應這個系統的處理能力。

執行緒方法:

stop():不建議,不安全。它會解除由執行緒獲取的所有鎖定,如果物件處於一種不連貫狀態,那麼其他執行緒能在那種狀態下檢查和修改他們。

suspend():不建議,已過期的方法。在使用suspend時他不會釋放執行緒,執行緒狀態為runable,這樣會導致死鎖。

sleep():停止一段時間,將執行機會讓給其他執行緒,可是監控狀態依然保持,呼叫sleep不會釋放物件鎖。

wait():會放棄物件鎖,可以針對notify方法喚醒後,進入執行狀態

同步:a執行緒要請求某個資源,但是此資源正在被b執行緒使用中,因為同步機制存在,a執行緒請求

不到,怎麼辦,a執行緒只能等待下去

非同步:a執行緒要請求某個資源,但是此資源正在被b執行緒使用中,因為沒有同步機制存在,a執行緒

仍然請求的到,a執行緒無需等待

總結:同步最安全,非同步有風險。如果是彩鳥,那就沒必要為了一點點效能去用非同步。

lock和synchronize區別:

相同點:lock能完成synchronize所有功能

不同點:synchronize會自動釋放鎖,lock必須在finally裡手動釋放。

執行緒池:

參考:

多執行緒的總結

今天學習了關於多執行緒的有關知識,主要涉及到幾個概念的理解,物件鎖 sleep wait notify notifyall。物件鎖 每個物件都有物件鎖,當某個執行緒進入用synchronized定義方法時,就獲得了當前類物件 方法所屬的類的物件 的鎖,其他執行緒就不能再獲得該鎖,直到執行緒釋放該鎖。...

多執行緒總結

多執行緒的重要性和作用我就不做說明了。直接進入正題,整理下,整理了下網上的若干資源,寫得很好的 一 首先不用說是msdn 1.system.threading 命名空間 system.threading命名空間提供一些使得可以進行多執行緒程式設計的類和介面。除同步執行緒活動和訪問資料的類 mutex...

多執行緒的技術總結

多執行緒技術總結 performselectorinbackground withobject nsthread 靜態方法 void detachnewthreadselector sel selector totarget id target withobject id argument 建立 n...