隨筆 - 0, 文章 - 264, 評(píng)論 - 170, 引用 - 0
          數(shù)據(jù)加載中……

          synchronized(this) 解釋

          public class DemoThread implements Runnable {
             
          public void run() {
                  synchronized(this) {            //請(qǐng)問(wèn)這里的this怎樣理解,t1和t2的地址不是不一樣嘛,怎么會(huì)只有一個(gè)線(xiàn)程運(yùn)行???
                      for (int i = 0; i < 5; i++) {
                          System.out.println(Thread.currentThread().getName() 
          + " synchronized loop " + i); 
                      }
                   }
              }

              public static void main(String[] args) {
                  DemoThread t1 
          = new DemoThread();
                  Thread ta 
          = new Thread(t1, "A");
                  Thread tb 
          = new Thread(t1, "B");
                  ta.start();
                  tb.start(); 
              }
          }


              解釋?zhuān)?br />    這里的this是指當(dāng)前對(duì)象,也就是說(shuō)不管ta還是tb,剛開(kāi)始運(yùn)行這段代碼的時(shí)候會(huì)給這段代碼加個(gè)鎖,這樣即使運(yùn)行到中間被替換了,
          另一個(gè)線(xiàn)程也不會(huì)執(zhí)行這段代碼,因?yàn)檫@段代碼加鎖了,而鑰匙在給代碼加鎖的那個(gè)線(xiàn)程手里,只有加鎖的線(xiàn)程運(yùn)行完這段代碼,才會(huì)給代碼解鎖.
          然后其他線(xiàn)程才能執(zhí)行這段代碼.. 加個(gè)synchronized(this)以后運(yùn)行結(jié)果是這樣:
          A synchronized loop 0
          A synchronized loop 1
          A synchronized loop 2
          A synchronized loop 3
          A synchronized loop 4
          B synchronized loop 0
          B synchronized loop 1
          B synchronized loop 2
          B synchronized loop 3
          B synchronized loop 4

          不加的話(huà)是這樣:(順序亂了,有好多種結(jié)果,這里只是其中一種)..
          A synchronized loop 0
          B synchronized loop 0
          A synchronized loop 1
          B synchronized loop 1
          A synchronized loop 2
          B synchronized loop 2
          A synchronized loop 3
          B synchronized loop 3
          B synchronized loop 4
          A synchronized loop 4




                 

          posted on 2012-09-27 16:03 小一敗涂地 閱讀(2028) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 并發(fā)、多線(xiàn)程java語(yǔ)言相關(guān)


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 万州区| 镇江市| 靖州| 苗栗县| 开江县| 子长县| 日喀则市| 同仁县| 吉木萨尔县| 乾安县| 库伦旗| 平泉县| 读书| 广昌县| 舒兰市| 米脂县| 海伦市| 子长县| 成武县| 霍城县| 郓城县| 大姚县| 达尔| 锡林郭勒盟| 鄢陵县| 武穴市| 商城县| 西林县| 肇庆市| 越西县| 饶平县| 巨野县| 东源县| 福州市| 建阳市| 新闻| 永川市| 高淳县| 甘德县| 壤塘县| 长丰县|