iOS線程安全之synchronized

兩個方法用synchronized案例如下:

static SysConfig *instance = nil;

+ (SysConfig*) Instance {

????@synchronized(self) ?{

????if(nil==instance) ?{

????????????instance = [[SysConfig alloc] init];

????????}

????}

????return instance;

}

+ (id)allocWithZone:(NSZone*)zone {

@synchronized(self) ?{

????????if(instance==nil){

????????????instance= [super allocWithZone: zone];

????????????return instance;

????????}

????}

????return nil;

}

在上面兩個例子中都用到關鍵字@synchronized栓票,這里大概說一下

@synchronized關鍵字代表這個方法加鎖, 相當于不管哪一個線程(例如線程A)堡僻,運行到這個方法時,都要檢查有沒有其它線程例如B正在用這個方法寂拆,有的話要等正在使用synchronized方法的線程B運行完這個方法后再運行此線程A,沒有的話,直接運行墙歪。它包括兩種用法:synchronized 方法和 synchronized 塊。

@synchronized 方法控制對類(一般在IOS中用在單例中)的訪問:每個類實例對應一把鎖查乒,每個 synchronized 方法都必須獲得調(diào)用該方法鎖方能執(zhí)行,否則所屬就會發(fā)生線程阻塞祥得,方法一旦執(zhí)行,就獨占該鎖蒋得,直到從該方法返回時才將鎖釋放级及,此后被阻塞的線程方能獲得該鎖,重新進入可執(zhí)行狀態(tài)额衙。這種機制確保了同一時刻對于每一個類创千,至多只有一個處于可執(zhí)行狀態(tài),從而有效避免了類成員變量的訪問沖突(只要所有可能訪問類的方法均被聲明為 synchronized)入偷。


synchronized 塊:

@通過synchronized關鍵字來聲明synchronized塊追驴。

? ? 語法如下:

? ? ? ? ? ? ? ? ???@synchronized(syncObject) { }

synchronized 塊是這樣一個代碼塊,其中的代碼必須獲得對象 syncObject (如前所述疏之,可以是類實例或類)的鎖方能執(zhí)行殿雪,具體機制同前所述。由于可以針對任意代碼塊锋爪,且可任意指定上鎖的對象丙曙,故靈活性較高。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末其骄,一起剝皮案震驚了整個濱河市亏镰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拯爽,老刑警劉巖索抓,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毯炮,居然都是意外死亡逼肯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門桃煎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篮幢,“玉大人,你說我怎么就攤上這事为迈∪唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵葫辐,是天一觀的道長搜锰。 經(jīng)常有香客問我,道長另患,這世上最難降的妖魔是什么纽乱? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮昆箕,結果婚禮上鸦列,老公的妹妹穿的比我還像新娘租冠。我一直安慰自己,他們只是感情好薯嗤,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布顽爹。 她就那樣靜靜地躺著,像睡著了一般骆姐。 火紅的嫁衣襯著肌膚如雪兵拢。 梳的紋絲不亂的頭發(fā)上搀矫,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天缝裤,我揣著相機與錄音房蝉,去河邊找鬼。 笑死带射,一個胖子當著我的面吹牛同规,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窟社,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼券勺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了灿里?” 一聲冷哼從身側響起关炼,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匣吊,沒想到半個月后儒拂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡缀去,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年侣灶,在試婚紗的時候發(fā)現(xiàn)自己被綠了甸祭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缕碎。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖池户,靈堂內(nèi)的尸體忽然破棺而出咏雌,到底是詐尸還是另有隱情,我是刑警寧澤校焦,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布赊抖,位于F島的核電站,受9級特大地震影響寨典,放射性物質(zhì)發(fā)生泄漏氛雪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一耸成、第九天 我趴在偏房一處隱蔽的房頂上張望报亩。 院中可真熱鬧浴鸿,春花似錦、人聲如沸弦追。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劲件。三九已至掸哑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間零远,已是汗流浹背苗分。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牵辣,地道東北人俭嘁。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像服猪,于是被迫代替她去往敵國和親供填。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 這段代碼有什么問題嗎罢猪?為了保持線程同步近她,需要給對象加鎖。對@synchronized: 防止不同的線程同時執(zhí)行同一...
    迷路的安然和無恙閱讀 2,499評論 0 1
  • 本文主要講了java中多線程的使用方法膳帕、線程同步粘捎、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應的一些線程函數(shù)用法危彩、概述等攒磨。 首先講...
    李欣陽閱讀 2,444評論 1 15
  • 該文章轉自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍閱讀 7,336評論 3 87
  • Java多線程學習 [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 2,952評論 1 18
  • 進程和線程 首先,在了解多線程之前要了解什么是進程汤徽,什么是線程 什么是進程呢娩缰?進程是指在系統(tǒng)中正在運行的一個應用程...
    擱淺的青蛙閱讀 365評論 0 0