第67條 避免過度同步

依據(jù)情況的不同创南,過度同步可能會導(dǎo)致性能降低伦忠、死鎖,甚至不確定的行為稿辙。
  為了避免活性失敗和安全性失敗昆码,在一個被同步的方法或者代碼塊中,永遠不要放棄對客戶端的控制邻储。換句話說赋咽,在一個被同步的區(qū)域內(nèi)部,不要調(diào)用設(shè)計成要被覆蓋的方法吨娜,或者是由客戶端以函數(shù)對象的形式提供的方法脓匿。從包含該同步區(qū)域的角度來看,這樣的方法是外來的(alien)宦赠。這個類不知道該方法會做什么事情陪毡,也無法控制它。根據(jù)外來方法的作用袱瓮,從同步區(qū)域中調(diào)用它會導(dǎo)致異常缤骨、死鎖或者數(shù)據(jù)損壞。通常尺借,你應(yīng)該在同步區(qū)域內(nèi)做盡可能少的工作绊起。
  如果一個可變類要并發(fā)使用,應(yīng)該使這個類變成線程安全的燎斩,通過內(nèi)部同步虱歪,你還可以獲得明顯比外部鎖定整個對象更高的并發(fā)性。否則栅表,就不要在內(nèi)部同步笋鄙。讓客戶在必要的時候從外部同步。(StringBuffer實例幾乎總是被用于單個線程中怪瓶,而它們執(zhí)行的卻是內(nèi)部同步萧落。因此,這種StringBuffer都應(yīng)該用StringBuilder代替。)
  簡而言之找岖,為了避免死鎖和數(shù)據(jù)破壞陨倡,千萬不要從同步區(qū)域內(nèi)部調(diào)用外來方法。更為一般地講许布,要盡量限制同步區(qū)域內(nèi)部的工作量兴革。當你在設(shè)計一個可變類的時候,要考慮一下它們是否應(yīng)該自己完成同步操作蜜唾。在現(xiàn)在這個多核的時代杂曲,這比永遠不要過度同步來得更重要。只有當你有足夠的理由一定要在內(nèi)部同步類的時候袁余,才應(yīng)該這么做擎勘,同時還應(yīng)該將這個決定清楚地寫到文檔中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泌霍,一起剝皮案震驚了整個濱河市货抄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌朱转,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件积暖,死亡現(xiàn)場離奇詭異藤为,居然都是意外死亡,警方通過查閱死者的電腦和手機夺刑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門缅疟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遍愿,你說我怎么就攤上這事存淫。” “怎么了沼填?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵桅咆,是天一觀的道長。 經(jīng)常有香客問我坞笙,道長岩饼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任薛夜,我火速辦了婚禮籍茧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梯澜。我一直安慰自己寞冯,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吮龄,像睡著了一般俭茧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上螟蝙,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天恢恼,我揣著相機與錄音,去河邊找鬼胰默。 笑死场斑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的牵署。 我是一名探鬼主播漏隐,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奴迅!你這毒婦竟也來了青责?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤取具,失蹤者是張志新(化名)和其女友劉穎脖隶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暇检,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡产阱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了块仆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片构蹬。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悔据,靈堂內(nèi)的尸體忽然破棺而出庄敛,到底是詐尸還是另有隱情,我是刑警寧澤科汗,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布藻烤,位于F島的核電站,受9級特大地震影響肛捍,放射性物質(zhì)發(fā)生泄漏隐绵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一拙毫、第九天 我趴在偏房一處隱蔽的房頂上張望依许。 院中可真熱鬧,春花似錦缀蹄、人聲如沸峭跳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛀醉。三九已至悬襟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拯刁,已是汗流浹背脊岳。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垛玻,地道東北人割捅。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像帚桩,于是被迫代替她去往敵國和親亿驾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法账嚎,類相關(guān)的語法莫瞬,內(nèi)部類的語法,繼承相關(guān)的語法郭蕉,異常的語法疼邀,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • java 接口的意義-百度 規(guī)范、擴展召锈、回調(diào) 抽象類的意義-樂視 為其子類提供一個公共的類型封裝子類中得重復(fù)內(nèi)容定...
    交流電1582閱讀 2,231評論 0 11
  • Java8張圖 11檩小、字符串不變性 12、equals()方法烟勋、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,707評論 0 11
  • 愚昧又惡俗的人筐付,光明正大地活著 明白又真實的人卵惦,茍且偷生地活著 這個扭曲的世界大概是很不喜歡 那些窺探到它真實模樣的人吧
    言西早啊閱讀 188評論 0 0
  • 前言 做Android開發(fā)這么多年,見過很多人寫的代碼(開源代碼除外)瓦戚,其中有的寫的代碼很簡潔沮尿、很漂亮,讓人看起來...
    esonyf閱讀 1,468評論 3 20