鷹翔宇空

          學習和生活

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
          對于synchronized的誤解:“synchronized可以鎖定函數或代碼”。其實,synchronized鎖定的不是函數和代碼,對于instance函數,它鎖定的僅僅是函數調用者的對象;對于static函數,則是class類。
          class Test {
             public synchronized void a1(){   //函數
               System.out.println("aaaaaaa11111111");
             }
             public void a2(){   //對象本身的引用
                 synchronized(this){
                    //
                       System.out.println("aaaaaaa2222222");
                 }
             }
             public void a3(OtherObject obj){   /外部對象的引用
                 synchronized(obj){
                    //
                       System.out.println("aaaaaaa33333333");
                 }
             }
           
          }
          前兩個通過synchronized獲得lock其實都是一個,雖然不在一個地方使用,使用的方式也不一樣,但是,兩種方式獲得的lock都會交給這個函數的對象(也就是this)。
          第三個則由于是外部對象的引用,所以則是另一個lock。
          posted on 2008-03-25 22:24 TrampEagle 閱讀(1000) 評論(0)  編輯  收藏 所屬分類: 工作之余
          主站蜘蛛池模板: 兴安盟| 凤冈县| 临夏市| 清镇市| 宁远县| 冀州市| 大宁县| 新绛县| 尼勒克县| 太原市| 沁源县| 东乌| 独山县| 黄山市| 永济市| 贵阳市| 寿光市| 黄大仙区| 宣化县| 西峡县| 斗六市| 海伦市| 仪陇县| 盐山县| 崇阳县| 马关县| 江达县| 湟中县| 阳高县| 丰镇市| 南陵县| 临沂市| 高唐县| 广丰县| 德安县| 萝北县| 大同市| 旬邑县| 东至县| 财经| 宁远县|