<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    synchronized 要注意的地方

    Posted on 2011-10-17 10:56 瘋狂 閱讀(1785) 評論(0)  編輯  收藏 所屬分類: java concurrent

    在Java1.5之前,synchronized應該是最常用的java支持并發手段。那synchronized是怎么做到的了,從java1.0開始,java中的每個對象就一個內部鎖。如果一個類的方法被synchronized關鍵字所修飾,那么這個對象的鎖將保護整個方法。

    舉例來說:

    public synchronized void method(){

        method body

    }

    等價于

    public void method(){

        this.intrinsicLock.lock();

        try{

            method body;

        }finally(){

            this.intrinsicLock.unlock();

        }

    }

     

    從上面的代碼示例可以看出,synchronized的使用方式是比較簡單的。這也導致了大量的初學者在碰到java編程的時候落入陷阱里,認為既然synhronized可以搞定一切,那么不管三七二十一,只要有并發可能性的地方,就加上synchronized的關鍵字,這顯然是不對的。在java對象中,這個java對象只有這一個內部鎖,其中一個synchronized方法獲取到了這個鎖,另外一個synchronized方法的調用將被阻塞。

    class sync{

        public synchronized void methodA(){};

        public synchronized void methodB(){};

        ... ...

     

    }

    methodA 和methodB在初始就是互斥的,如果methodA和methodB進入互相等待,就很容易出現死鎖的情況。那如果碰到這種情況,應該怎么做了?常用的方式是在方法內部新建一個無意義的對象,然后對這個無意義的對象加鍋。

     

    1. package zl.study.concurrency.synchronize;  
    2. public class Sync {  
    3.     private int i;  
    4.       
    5.     public void plus(){  
    6.         Object dummy = new Object();  
    7.         synchronized(dummy){  
    8.             i++;  
    9.         }  
    10.     }  
    11.       
    12.     public void minus(){  
    13.         Object dummy = new Object();  
    14.         synchronized(dummy){  
    15.             i--;  
    16.         }         
    17.     }  
    18. }  
     

    另外需要注意的是將靜態類聲明為synchronized方法也是合法的。舉例來說,如果Sync有一個static synchronized方法,那么這個方法被調用時,bank.class這個類對象本身在jvm中將被鎖住

    主站蜘蛛池模板: 亚洲美女免费视频| 在线播放免费人成视频在线观看| 亚洲中文字幕一二三四区| 亚洲日本一区二区一本一道| 免费无码国产V片在线观看| 亚洲女人初试黑人巨高清| 国产精品无码免费专区午夜 | 亚洲综合一区国产精品| 最新亚洲人成无码网站| 色偷偷亚洲第一综合| 久久一本岛在免费线观看2020 | 一区二区三区观看免费中文视频在线播放| 香蕉免费一区二区三区| 无码日韩人妻av一区免费| 日本免费xxxx色视频| 84pao强力永久免费高清| 中文字幕亚洲色图| 国产午夜亚洲精品国产| 亚洲AV无码成人精品区狼人影院| 日本精品久久久久久久久免费| eeuss草民免费| 亚洲成av人片在线观看天堂无码| 亚洲AV无码一区东京热| 亚洲精华国产精华精华液好用| 台湾一级毛片永久免费| 亚洲午夜精品一区二区| 欧美最猛性xxxxx免费| 免费人成在线观看网站| 成人无码精品1区2区3区免费看| 色婷婷六月亚洲综合香蕉| 91福利视频免费观看| 好久久免费视频高清| 亚洲午夜精品第一区二区8050| 曰批免费视频播放免费| 先锋影音资源片午夜在线观看视频免费播放| 久久久久国产精品免费免费搜索 | 蜜桃成人无码区免费视频网站 | 无码国产精品一区二区免费16| 亚洲日韩在线中文字幕第一页| 亚洲成a人片在线看| 青青草免费在线视频|