鷹翔宇空

          學(xué)習(xí)和生活

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
          對于synchronized的誤解:“synchronized可以鎖定函數(shù)或代碼”。其實(shí),synchronized鎖定的不是函數(shù)和代碼,對于instance函數(shù),它鎖定的僅僅是函數(shù)調(diào)用者的對象;對于static函數(shù),則是class類。
          class Test {
             public synchronized void a1(){   //函數(shù)
               System.out.println("aaaaaaa11111111");
             }
             public void a2(){   //對象本身的引用
                 synchronized(this){
                    //
                       System.out.println("aaaaaaa2222222");
                 }
             }
             public void a3(OtherObject obj){   /外部對象的引用
                 synchronized(obj){
                    //
                       System.out.println("aaaaaaa33333333");
                 }
             }
           
          }
          前兩個(gè)通過synchronized獲得lock其實(shí)都是一個(gè),雖然不在一個(gè)地方使用,使用的方式也不一樣,但是,兩種方式獲得的lock都會(huì)交給這個(gè)函數(shù)的對象(也就是this)。
          第三個(gè)則由于是外部對象的引用,所以則是另一個(gè)lock。
          posted on 2008-03-25 22:24 TrampEagle 閱讀(1004) 評(píng)論(0)  編輯  收藏 所屬分類: 工作之余
          主站蜘蛛池模板: 泗洪县| 金沙县| 佳木斯市| 恩平市| 亳州市| 桐柏县| 新竹市| 泸西县| 嵊州市| 保德县| 泸溪县| 察隅县| 林周县| 富民县| 樟树市| 南丰县| 南平市| 平阳县| 明溪县| 方正县| 黑山县| 牡丹江市| 清远市| 宁陵县| 乌海市| 错那县| 资源县| 页游| 福泉市| 镇江市| 萨迦县| 永清县| 眉山市| 库伦旗| 那曲县| 蒙自县| 闵行区| 临泉县| 筠连县| 神农架林区| 兰州市|