<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Thinker

      - long way to go...

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      24 隨筆 :: 0 文章 :: 143 評論 :: 0 Trackbacks
     使用字符串常量作為鎖去同步代碼是非常危險的事情。請看下面的一段代碼:
      class Foo  {
    static private final String LOCK = "LOCK";
    void someMethod() {
    synchronized(LOCK) {
    ...
    }
    }
    }

    為什么這樣會有危險呢?私有的字符串常量是真正的私有嗎?答案是否定的。
      重新閱讀一下
    Java語言規(guī)范2.0的第3.10.5節(jié),“不同包不同類中的值相同的字符串常量引用的是同一個字符串對象。”
      上面的那段代碼意味著外部任何的
    Class都可以包含指向同一個字符串對象的字符串常量,因此就有可能出現(xiàn)死鎖的情況!如果你的字符串對象調(diào)用了intern()方法也有可能會出現(xiàn)這種情況!
      這種情況在
    Jetty類庫中真正的出現(xiàn)過,兩個部分使用了相同的字符串常量去同步臨界區(qū)代碼,那兩個代碼片段產(chǎn)生了死鎖現(xiàn)象,并且出現(xiàn)了莫名其妙的棧的跟蹤信息。(Jetty-Bug已經(jīng)記錄了這個BugJetty-352
      如果你確實需要一個對象鎖的話,最好使用
    new Object()來創(chuàng)建。也可以考慮使用java.util.concurrent包中的工具。

    英文原文:http://www.javalobby.org/java/forums/t96352.html


    http://m.tkk7.com/qujinlong123/




    posted on 2007-05-31 17:27 Long 閱讀(3753) 評論(2)  編輯  收藏 所屬分類: Java

    評論

    # re: 不要使用字符串常量作為對象鎖去同步代碼(翻) 2007-06-01 10:51 tomato
    好  回復  更多評論
      

    # re: 不要使用字符串常量作為對象鎖去同步代碼(翻) 2007-06-01 17:11 老李
    提醒的好,這種細節(jié)東西大家最容易忽略!
    頂  回復  更多評論
      

    主站蜘蛛池模板: 免费av片在线观看网站| 久久av无码专区亚洲av桃花岛| a拍拍男女免费看全片| 久久国产乱子伦精品免费午夜| 亚洲精品无码av中文字幕| 亚洲影院在线观看| 亚洲乱码一区二区三区在线观看| 美女被免费视频网站a国产| 亚洲高清视频免费| 午夜视频在线免费观看| 伊人免费在线观看| 国产亚洲精品2021自在线| 亚洲人成未满十八禁网站| 亚洲欧洲自拍拍偷午夜色| 亚洲精品私拍国产福利在线| 亚洲中文字幕无码一区| 亚洲免费在线观看| 免费a在线观看播放| 国产在线19禁免费观看国产| 免费无码黄动漫在线观看| 在线观看特色大片免费视频| 四虎免费影院ww4164h| 中文字幕视频免费| 222www在线观看免费| 91视频免费网址| 亚洲高清免费在线观看| **实干一级毛片aa免费| 无码人妻AV免费一区二区三区| 久艹视频在线免费观看| 免费91麻豆精品国产自产在线观看| 在线观看人成视频免费无遮挡| 一区二区视频在线免费观看| 一级特级女人18毛片免费视频| 一区二区三区视频免费观看| 国产无遮挡色视频免费观看性色 | a级毛片免费在线观看| 中文字幕在线视频免费观看| 免费在线黄色电影| 久久aa毛片免费播放嗯啊| 99久久99久久免费精品小说| 在线视频免费观看高清|