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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 辽阳县| 于田县| 黑山县| 夏邑县| 化州市| 赤峰市| 郧西县| 朝阳区| 淮南市| 马山县| 和田市| 麻阳| 根河市| 勃利县| 阳新县| 仙桃市| 孝感市| 衡阳市| 枣庄市| 新昌县| 奈曼旗| 南华县| 化州市| 东台市| 曲麻莱县| 天峻县| 滨海县| 军事| 贡觉县| 卫辉市| 武强县| 许昌市| 海原县| 绥中县| 新龙县| 西乌| 垦利县| 临沂市| 汨罗市| 惠来县| 河源市|