yxhxj2006

          常用鏈接

          統計

          最新評論

          同步靜態方法

          問:當定義了方法A和方法B,當實例化類后,多線程如何保證調用方法A時方法B即使被調用也不會被執行?Java有保證這種機制的關鍵字嗎?

          答:用 synchronized 搜索修飾方法   例如: 
          public class O
          {
          public synchronized void A(){}
          public synchronized void B(){}
          }
          同一個類中的所有synchronized修飾的方法是不能同時調用的,也就是說同時只能調用其中一個方法,比如線程1調用A方法,在A方法執行完之前,線程2調用B方法,這個時候線程2就會阻塞,直到線程1調用完A方法后,線程2才開始執行B方法!

          還有一個解決方法就是加一個同步對象鎖

          public class O
          {
          Object lock;
          public void A()
          {
          synchronized(lock)
          {
          //這里寫方法內容
          }
          }
          public void B()
          {
          synchronized(lock)
          {
          //這里寫方法內容
          }
          }
          }


          注意:同一個類中所有的同步的靜態方法,它們在類范圍類是同步的,也就是同一時間只能有一個線程可以訪問所有同步靜態方法中的一個。

           

          不同類中的靜態同步方法互不影響。前面所說,靜態同步方法是類級別的,也就是以類為單位進行控制的。如果兩個線程訪問不同類中的同步方法,這兩個線程是不需要等待的,即使是靜態方法。





          posted on 2013-11-06 19:29 奮斗成就男人 閱讀(325) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东源县| 商都县| 隆德县| 长治县| 长治市| 香格里拉县| 岳阳市| 夏邑县| 阿勒泰市| 江油市| 大厂| 丽水市| 新郑市| 教育| 盐山县| 张掖市| 都兰县| 乌审旗| 忻州市| 郑州市| 迁安市| 维西| 华池县| 高青县| 道真| 万山特区| 文成县| 米泉市| 枣庄市| 新宾| 临清市| 灵璧县| 思南县| 井陉县| 长顺县| 比如县| 秦安县| 甘谷县| 开远市| 尖扎县| 北辰区|