鷹翔宇空

          學習和生活

          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)  編輯  收藏 所屬分類: 工作之余
          主站蜘蛛池模板: 雅江县| 抚顺县| 桃园市| 永登县| 万荣县| 富宁县| 孟连| 美姑县| 开远市| 昌都县| 丹棱县| 东方市| 日照市| 抚远县| 镇巴县| 当雄县| 长葛市| 台南县| 南通市| 天柱县| 东乌| 永泰县| 田林县| 阿巴嘎旗| 潼关县| 肃南| 抚州市| 蓬溪县| 曲麻莱县| 互助| 松潘县| 巧家县| 共和县| 江孜县| 南丹县| 高邮市| 海城市| 申扎县| 新宁县| 常德市| 颍上县|