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

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

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

    posts - 110, comments - 101, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    1.synchronized與static synchronized 的區別

            synchronized是對類的當前實例進行加鎖,防止其他線程同時訪問該類的該實例的所有synchronized塊,注意這里是“類的當前實例”, 類的兩個不同實例就沒有這種約束了。那么static synchronized恰好就是要控制類的所有實例的訪問了,static synchronized是限制線程同時訪問jvm中該類的所有實例同時訪問對應的代碼快。實際上,在類中某方法或某代碼塊中有 synchronized,那么在生成一個該類實例后,改類也就有一個監視快,放置線程并發訪問改實例synchronized保護快,而static synchronized則是所有該類的實例公用一個監視快了,也也就是兩個的區別了,也就是synchronized相當于 this.synchronized,而static synchronized相當于Something.synchronized.
             一個日本作者-結成浩的《java多線程設計模式》有這樣的一個列子:

    pulbic class Something(){ 
        publicsynchronizedvoid isSyncA(){} 
        publicsynchronizedvoid isSyncB(){} 
        publicstaticsynchronizedvoid cSyncA(){} 
        publicstaticsynchronizedvoid cSyncB(){} 
    } 
           那么,加入有Something類的兩個實例a與b,那么下列組方法何以被1個以上線程同時訪問呢

    a. x.isSyncA()與x.isSyncB()  
    b. x.isSyncA()與y.isSyncA() 
    c. x.cSyncA()與y.cSyncB() 
    d. x.isSyncA()與Something.cSyncA() 
          這里,很清楚的可以判斷:

    a,都是對同一個實例的synchronized域訪問,因此不能被同時訪問 b,是針對不同實例的,因此可以同時被訪問 c,因為是static synchronized,所以不同實例之間仍然會被限制,相當于Something.isSyncA()與 Something.isSyncB()了,因此不能被同時訪問。 那么,第d呢?,書上的 答案是可以被同時訪問的,答案理由是synchronzied的是實例方法與synchronzied的類方法由于鎖定(lock)不同的原因。 個人分析也就是synchronized 與static synchronized 相當于兩幫派,各自管各自,相互之間就無約束了,可以被同時訪問。目前還不是分清楚java內部設計synchronzied是怎么樣實現的。
    結論:A: synchronized static是某個類的范圍,synchronized static cSync{}防止多個線程同時訪問這個 類中的synchronized static 方法。它可以對類的所有對象實例起作用。
    B: synchronized 是某實例的范圍,synchronized isSync(){}防止多個線程同時訪問這個實例中的synchronized 方法。


    2.synchronized方法與synchronized代碼快的區別 

            synchronized methods(){} 與synchronized(this){}之間沒有什么區別,只是synchronized methods(){} 便于閱讀理解,而synchronized(this){}可以更精確的控制沖突限制訪問區域,有時候表現更高效率。


    3.synchronized關鍵字是不能繼承的

             這個在《搞懂java中的synchronized關鍵字》一文中看到的,我想這一點也是很值得注意的,繼承時子類的覆蓋方法必須顯示定義成synchronized。(但是如果使用繼承開發環境的話,會默認加上synchronized關鍵字)


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久WWW免费人成精品| 国产精品亚洲天堂| 毛片在线播放免费观看| 中文字幕中韩乱码亚洲大片| 日韩在线观看视频免费| 午夜亚洲福利在线老司机| 国产精品亚洲av色欲三区| 国产麻豆免费观看91| 亚洲av永久无码天堂网| 超pen个人视频国产免费观看| 亚洲人成色77777在线观看| 在线免费观看韩国a视频| 无人视频在线观看免费播放影院 | 亚洲欧美不卡高清在线| 大学生美女毛片免费视频| 亚洲国产成人手机在线观看| 国产午夜鲁丝片AV无码免费| 黄色毛片视频免费| 久久精品国产亚洲AV不卡| 日韩精品无码免费专区午夜不卡| 国产精品久久久亚洲| 久久久久久曰本AV免费免费| 亚洲狠狠成人综合网| 免费在线不卡视频| 国精产品一区一区三区免费视频| 91情国产l精品国产亚洲区| 日韩国产免费一区二区三区| 麻豆亚洲AV成人无码久久精品 | 亚洲av日韩av永久在线观看| 免费少妇a级毛片| 成人免费av一区二区三区| 亚洲电影一区二区| 女人与禽交视频免费看| 污污污视频在线免费观看| 亚洲AV日韩AV高潮无码专区| 亚洲人成网站免费播放| 免费无码婬片aaa直播表情| 久久久久亚洲精品美女| 女人被男人桶得好爽免费视频| 一区二区三区免费在线观看| 精品日韩亚洲AV无码|