<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 瘋狂 閱讀(1798) 評論(0)  編輯  收藏 所屬分類: java concurrent

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

    舉例來說:

    public synchronized void method(){

        method body

    }

    等價于

    public void method(){

        this.intrinsicLock.lock();

        try{

            method body;

        }finally(){

            this.intrinsicLock.unlock();

        }

    }

     

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

    class sync{

        public synchronized void methodA(){};

        public synchronized void methodB(){};

        ... ...

     

    }

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

     

    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方法,那么這個方法被調(diào)用時,bank.class這個類對象本身在jvm中將被鎖住

    主站蜘蛛池模板: 91成人免费观看网站| a在线观看免费视频| 成年女人毛片免费播放人| 亚洲综合婷婷久久| 爽爽爽爽爽爽爽成人免费观看| 亚洲国产精品国产自在在线| 边摸边吃奶边做爽免费视频99| 宅男666在线永久免费观看| 亚洲精品人成网线在线播放va| 三年片在线观看免费观看高清电影| 亚洲卡一卡2卡三卡4麻豆| 精品久久久久成人码免费动漫| 亚洲videos| 午夜a级成人免费毛片| 国产午夜亚洲精品不卡| 免费a级毛片在线观看| 国产亚洲精品2021自在线| 亚洲五月午夜免费在线视频| 国产性生大片免费观看性| 亚洲成色999久久网站| 久九九精品免费视频| 极品色天使在线婷婷天堂亚洲| 免费在线观看中文字幕| 99精品视频免费| 亚洲永久中文字幕在线| 免费网站看v片在线香蕉| 日本激情猛烈在线看免费观看| 亚洲精品成人无限看| av免费不卡国产观看| 国产偷国产偷亚洲高清在线| 亚洲精品成人片在线观看精品字幕| 免费国产黄网站在线观看可以下载| 亚洲成a人片在线观看精品| 四虎影视永久免费观看地址| 男女一边摸一边做爽的免费视频| 亚洲综合激情视频| 四虎免费久久影院| 免费人成视频在线观看网站 | 亚洲三级在线视频| vvvv99日韩精品亚洲| 精品无码无人网站免费视频 |