鷹翔宇空

          學習和生活

          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 閱讀(1004) 評論(0)  編輯  收藏 所屬分類: 工作之余
          主站蜘蛛池模板: 隆德县| 丹巴县| 雅安市| 积石山| 乐东| 塔河县| 新巴尔虎左旗| 云安县| 涪陵区| 年辖:市辖区| 玉龙| 托克托县| 仪征市| 永安市| 湖南省| 微山县| 讷河市| 洮南市| 阿图什市| 中江县| 西华县| 右玉县| 浪卡子县| 凉山| 大新县| 新民市| 皋兰县| 佳木斯市| 乌鲁木齐县| 博罗县| 拜城县| 定陶县| 临夏市| 曲沃县| 阳信县| 南澳县| 宁乡县| 铜梁县| 凤山县| 仁寿县| 涟源市|