多執行緒的總結

2021-08-30 05:07:40 字數 709 閱讀 2617

今天學習了關於多執行緒的有關知識,主要涉及到幾個概念的理解,物件鎖、sleep、wait、notify、notifyall。

物件鎖:每個物件都有物件鎖,當某個執行緒進入用synchronized定義方法時,就獲得了當前類物件(方法所屬的類的物件)的鎖,其他執行緒就不能再獲得該鎖,直到執行緒釋放該鎖。乙個類物件有乙個物件鎖,多個同步方法公用乙個物件鎖。

sleep:是當前執行緒處於休眠狀態,將對cpu的控制權交給其他執行緒,但不釋放當前物件的鎖,其他執行緒可以獲得cpu,但不能進入當前執行緒控制的物件鎖。

wait:與sleep的區別是,它會釋放物件鎖,其他執行緒可以進入該同步塊。

notify:進入當前同步塊的執行緒呼叫wait方法變成休眠狀態的執行緒,notify將該執行緒變成等待狀態。

notifyall:進入當前同步塊的執行緒呼叫wait方法變成休眠狀態,notifyall使所有休眠執行緒變成等待狀態。

乙個類中有多個同步方法,進入任意乙個同步塊都將獲得該物件鎖,由於wait方法使進入同步塊的執行緒休眠,notify只能喚醒所有被休眠執行緒中的乙個,notifyall可以喚醒所有休眠執行緒。通常執行緒的通訊通過wait,notifyall和wait條件來實現。

同步方法:進入方法的執行緒獲取該物件的鎖。作用域是整個方法。

同步塊:synchronized(this){},獲取當前物件的鎖,如果訪問訪問該物件的其他同步塊將被堵塞。

synchronized要求只有獲取物件的鎖之後才能執行。

多執行緒的總結

多執行緒 指的是這個程式 乙個程序 執行時產生了不止乙個執行緒 並行與併發 o 並行 多個cpu例項或者多台機器同時執行一段處理邏輯,是真正的同時。o 併發 通過cpu排程演算法,讓使用者看上去同時執行,實際上從cpu操作層面不是真正的同時。併發往往在場景中有公用的資源,那麼針對這個公用的資源往往產...

多執行緒總結

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

多執行緒的技術總結

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