<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    synchronized 要注意的地方

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

    在Java1.5之前,synchronized應該是最常用的java支持并發(fā)手段。那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可以搞定一切,那么不管三七二十一,只要有并發(fā)可能性的地方,就加上synchronized的關鍵字,這顯然是不對的。在java對象中,這個java對象只有這一個內部鎖,其中一個synchronized方法獲取到了這個鎖,另外一個synchronized方法的調用將被阻塞。

    class sync{

        public synchronized void methodA(){};

        public synchronized void methodB(){};

        ... ...

     

    }

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

     

    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. }  
     

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

    主站蜘蛛池模板: 亚洲午夜无码久久久久软件| 亚洲国产精品综合一区在线| 久久久亚洲精华液精华液精华液| 永久免费在线观看视频| 久久久久亚洲av无码尤物| 全黄大全大色全免费大片| 亚洲婷婷五月综合狠狠爱| 久久久WWW免费人成精品| 亚洲无码黄色网址| 91免费福利视频| 亚洲欧洲日韩不卡| 99在线热视频只有精品免费| 久久亚洲国产成人精品性色| 1000部啪啪毛片免费看| 亚洲偷偷自拍高清| 免费无码又爽又刺激毛片| 黄页网址在线免费观看| 国产成人A亚洲精V品无码| 久久青草精品38国产免费| 亚洲尹人九九大色香蕉网站| 91免费播放人人爽人人快乐| 久久亚洲国产最新网站| 免费a级毛片18以上观看精品| 九九久久国产精品免费热6| 亚洲无av在线中文字幕| 最近中文字幕电影大全免费版| 亚洲av产在线精品亚洲第一站| 国内免费高清在线观看| 日本系列1页亚洲系列| 久久亚洲色一区二区三区| 久久精品免费观看国产| 国产成人精品日本亚洲11| 免费看一级做a爰片久久| baoyu777永久免费视频| 亚洲综合在线成人一区| 国产精品无码一二区免费| 精品国产福利尤物免费| 亚洲春黄在线观看| 亚洲国产精品成人一区| 8x8×在线永久免费视频| 亚洲av无码专区亚洲av不卡|