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

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

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


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




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

    評論

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

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

    主站蜘蛛池模板: 亚州**色毛片免费观看| 日韩亚洲翔田千里在线| 久久久久久AV无码免费网站下载| 亚洲综合最新无码专区| 日韩一级片免费观看| 亚洲а∨天堂久久精品| 丰满妇女做a级毛片免费观看| 无码专区一va亚洲v专区在线| 免费看美女午夜大片| 亚洲精品国产电影| a毛片全部免费播放| 亚洲AV永久无码精品水牛影视 | 免费人成网站在线播放| 国产精品亚洲精品日韩动图| 亚洲AV日韩精品一区二区三区| 免费精品国产自产拍在线观看| 久久久久亚洲av毛片大| 国产拍拍拍无码视频免费| 日木av无码专区亚洲av毛片| 国产精品久久久久免费a∨| 亚洲中文字幕久久精品蜜桃| 免费一级黄色毛片| 免费久久人人爽人人爽av| 77777_亚洲午夜久久多人| 黄页网站免费观看| 黄色片网站在线免费观看| 国产AV无码专区亚洲AV毛网站 | 亚洲精品免费视频| 成年人在线免费看视频| 无码 免费 国产在线观看91| 亚洲国语精品自产拍在线观看 | 亚洲色大成网站www尤物| 国产免费人视频在线观看免费| caoporm超免费公开视频| 亚洲日本va午夜中文字幕一区| 猫咪社区免费资源在线观看| 污污的视频在线免费观看| 亚洲人成网站在线播放影院在线 | 精品日韩亚洲AV无码| 日韩免费视频播播| 国产在线观看免费视频软件|