<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中將被鎖住

    主站蜘蛛池模板: 亚洲一线产品二线产品| 亚洲伊人tv综合网色| 国产亚洲精品国产福利在线观看 | 日韩亚洲一区二区三区| 国产黄色片免费看| 日韩精品亚洲aⅴ在线影院| 精品无码国产污污污免费网站国产| 亚洲国产成人久久综合野外| 精品免费久久久久国产一区| 亚洲综合国产一区二区三区| 最近中文字幕大全免费版在线| 日韩亚洲欧洲在线com91tv| 99精品视频免费观看| 亚洲理论精品午夜电影| 性做久久久久久免费观看| 亚洲精品永久在线观看| 国产特级淫片免费看| 狠狠躁狠狠爱免费视频无码| 久久91亚洲精品中文字幕| 国产成人精品免费视频大全麻豆 | 亚洲男人天堂影院| 成人午夜大片免费7777| 青青草97国产精品免费观看| 国产a v无码专区亚洲av| 无码人妻精品中文字幕免费 | 日韩免费a级毛片无码a∨| 豆国产96在线|亚洲| 亚洲人妻av伦理| 99久久99久久免费精品小说| 亚洲人成无码网站在线观看| 久久久久亚洲AV无码专区网站| 国产精品免费高清在线观看 | 成年网站免费入口在线观看 | 亚洲国产精品成人久久| 成年免费大片黄在线观看岛国 | 野花香在线视频免费观看大全| 久久综合亚洲色一区二区三区| 色吊丝最新永久免费观看网站| 中文字幕不卡免费视频| 亚洲国产成人无码av在线播放| 免费国内精品久久久久影院|