瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          關(guān)于java.lang.IllegalMonitorStateException

          Posted on 2011-10-14 18:03 瘋狂 閱讀(27818) 評論(3)  編輯  收藏 所屬分類: java
          關(guān)于IllegalMonitorStateException異常:
          api中的解釋
          public class IllegalMonitorStateExceptionextends RuntimeException

          拋出的異常表明某一線程已經(jīng)試圖等待對象的監(jiān)視器,或者試圖通知其他正在等待對象的監(jiān)視器而本身沒有指定監(jiān)視器的線程。 



          從以下版本開始: 
          JDK1.
          0 
          另請參見: 
          Object.notify(), Object.notifyAll(), Object.wait(), Object.wait(
          long), Object.wait(longint), 序列化表格
           也就是當(dāng)前的線程不是此對象監(jiān)視器的所有者。也就是要在當(dāng)前線程鎖定對象,才能用鎖定的對象此行這些方法,需要用到synchronized ,鎖定什么對象就用什么對象來執(zhí)行
          notify(), notifyAll(),wait(), wait(long), wait(long, int)操作,否則就會報IllegalMonitorStateException異常。
          例如 :
          exapmle 1,鎖定方法所屬的實(shí)例對象:
          public synchronized void method(){
              //然后就可以調(diào)用:this.notify()...
              //或者直接調(diào)用notify()...
          }
          exapmle 2,鎖定方法所屬的實(shí)例的Class:
          public Class Test{
           public static synchronized void method(){
              //然后調(diào)用:Test.class.notify()...
           }
          }
          exapmle 3,鎖定其他對象:
          public Class Test{
          public Object lock = new Object();
           public static void method(){
              synchronized (lock) {
               //需要調(diào)用 lock.notify();
              } 
           }
          }

          評論

          # re: 關(guān)于java.lang.IllegalMonitorStateException   回復(fù)  更多評論   

          2014-09-23 17:13 by hibernate
          經(jīng)典!一直沒弄明白的一個問題,被你一點(diǎn)即破,感謝!

          # re: 關(guān)于java.lang.IllegalMonitorStateException   回復(fù)  更多評論   

          2014-12-23 17:01 by 經(jīng)典
          真是一語道破啊!這才是經(jīng)典。

          # re: 關(guān)于java.lang.IllegalMonitorStateException   回復(fù)  更多評論   

          2016-02-12 00:04 by 浪得虛名
          找了好多資料沒解決的問題,到這里終于明白了,就沒看破this.notify()要換成lock.notify()
          主站蜘蛛池模板: 烟台市| 长顺县| 淮滨县| 肇庆市| 泰顺县| 乌拉特中旗| 龙江县| 综艺| 榆中县| 辽源市| 玉龙| 贡山| 文化| 海淀区| 西华县| 丰城市| 南丰县| 汝州市| 东山县| 泰安市| 泗水县| 交城县| 曲周县| 高清| 肥城市| 普兰店市| 城市| 平果县| 邵武市| 阿克陶县| 沙洋县| 进贤县| 天峨县| 南通市| 宜章县| 沁水县| 东明县| 桓仁| 吕梁市| 嘉荫县| 嵊州市|