隨筆 - 0, 文章 - 264, 評論 - 170, 引用 - 0
          數據加載中……

          synchronized(this) 解釋

          public class DemoThread implements Runnable {
             
          public void run() {
                  synchronized(this) {            //請問這里的this怎樣理解,t1和t2的地址不是不一樣嘛,怎么會只有一個線程運行???
                      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(); 
              }
          }


              解釋:
          這里的this是指當前對象,也就是說不管ta還是tb,剛開始運行這段代碼的時候會給這段代碼加個鎖,這樣即使運行到中間被替換了,
          另一個線程也不會執行這段代碼,因為這段代碼加鎖了,而鑰匙在給代碼加鎖的那個線程手里,只有加鎖的線程運行完這段代碼,才會給代碼解鎖.
          然后其他線程才能執行這段代碼.. 加個synchronized(this)以后運行結果是這樣:
          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

          不加的話是這樣:(順序亂了,有好多種結果,這里只是其中一種)..
          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 小一敗涂地 閱讀(2032) 評論(0)  編輯  收藏 所屬分類: 并發、多線程java語言相關

          主站蜘蛛池模板: 庄河市| 闽侯县| 视频| 治多县| 喀喇沁旗| 饶平县| 望奎县| 镇安县| 松潘县| 五峰| 大兴区| 勐海县| 内丘县| 洛宁县| 仁化县| 梅州市| 保靖县| 思茅市| 张掖市| 青铜峡市| 彩票| 和硕县| 梓潼县| 城口县| 南充市| 永嘉县| 丽水市| 岳阳市| 九台市| 阿勒泰市| 平乡县| 三门峡市| 福州市| 高雄市| 上虞市| 柯坪县| 大安市| 宿迁市| 建水县| 秦安县| 乌鲁木齐县|