<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成人潮喷综合网| 亚洲AV日韩AV无码污污网站| 日韩免费观看视频| 国产AV日韩A∨亚洲AV电影| 国产在线观看免费视频播放器| 亚洲人成人伊人成综合网无码| 国产精品国产免费无码专区不卡| 亚洲精品久久久久无码AV片软件| 国产一级一片免费播放| eeuss影院免费92242部| 亚洲日韩v无码中文字幕| 无码人妻丰满熟妇区免费| 91亚洲国产成人精品下载| 中文字幕无码不卡免费视频 | 67pao强力打造国产免费| 亚洲国产精品线观看不卡| 蜜臀91精品国产免费观看| 日韩在线观看视频免费 | 亚洲成综合人影院在院播放| 久久久www成人免费毛片| 精品视频免费在线| 亚洲欧洲美洲无码精品VA| 在免费jizzjizz在线播 | 韩日电影在线播放免费版| 日本久久久久亚洲中字幕| 在线免费视频一区| 黄色网页在线免费观看| 亚洲欧洲国产成人精品| 四虎永久免费地址在线网站| 天黑黑影院在线观看视频高清免费| 亚洲黄网站wwwwww| 免费国产精品视频| 91精品手机国产免费| 最好2018中文免费视频| 亚洲精品成人网站在线播放| 国产一区二区三区在线免费观看 | igao激情在线视频免费| 亚洲成人福利在线| 在线日韩日本国产亚洲|