曬太陽

          java線程互鎖演示

           1 /**
           2  * 線程互鎖:線程td1得到obj1的鎖,線程td2得到了obj2的鎖,接著,線程td1在持有obj1的鎖的同時
           3  * 企圖得到obj2的鎖,而此時線程td2仍持有obj2的鎖,所以線程td1等待,而線程td2的行為也與線程td1相同
           4  * 因此就形成了死鎖
           5  */
           6 public class Client {
           7     public static void main(String[] args) {
           8         final Object obj1 = "test1";
           9         final Object obj2 = "test2";
          10         
          11         Thread td1 = new Thread(){
          12             public void run(){
          13                 synchronized(obj1){
          14                     System.out.println("td1得到了obj1的鎖");
          15                     try {
          16                         Thread.sleep(1000);
          17                     } catch (InterruptedException e) {
          18                         e.printStackTrace();
          19                     }
          20                     
          21                     synchronized(obj2){
          22                         System.out.println("td1企圖得到obj2的鎖");
          23                         
          24                         try {
          25                             Thread.sleep(1000);
          26                         } catch (InterruptedException e) {
          27                             e.printStackTrace();
          28                         }
          29                     }
          30                 }
          31             }
          32         };
          33         
          34 
          35         Thread td2 = new Thread(){
          36             public void run(){
          37                 synchronized(obj2){
          38                     System.out.println("td2得到了obj2的鎖");
          39                     try {
          40                         Thread.sleep(1000);
          41                     } catch (InterruptedException e) {
          42                         e.printStackTrace();
          43                     }
          44                     
          45                     synchronized(obj1){
          46                         System.out.println("td2企圖得到obj1的鎖");
          47                         
          48                         try {
          49                             Thread.sleep(1000);
          50                         } catch (InterruptedException e) {
          51                             e.printStackTrace();
          52                         }
          53                     }
          54                 }
          55             }
          56         };
          57         
          58         td1.start();
          59         td2.start();
          60     }
          61 
          62 }

          posted on 2012-11-23 06:16 曬太陽 閱讀(365) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 哈巴河县| 克山县| 静安区| 曲周县| 伊通| 高雄县| 芦山县| 绍兴县| 浙江省| 锡林郭勒盟| 宝应县| 三门峡市| 玛沁县| 分宜县| 黄陵县| 彩票| 柳河县| 克东县| 浦东新区| 运城市| 浙江省| 和顺县| 昌都县| 钟祥市| 洪泽县| 巴楚县| 册亨县| 金乡县| 措美县| 淳安县| 翁源县| 安国市| 兴宁市| 滦南县| 城口县| 岑巩县| 米林县| 泽普县| 祥云县| 阿克苏市| 亳州市|