这里看了一个号称《最简实例说明wait、notify、notifyAll的使用方法》,依法炮制了在自己程序里却不能用,还是报IllegalMonitorStateException错。http://longdick.iteye.com/blog/453615问题主要出在同步时锁定的对象,按文指点,使用了数组也不行,改成this就可以了。至此,还是没弄明白这个“锁定对象”是怎么回事儿?网上几乎都是说“取得对象控制权”,一样不知所云。或许他们自己心里明白吧,但这种说法令人摸不着头脑。请明白人讲解一下。

解决方案 »

  1.   

    wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,防止读写冲突产生脏数据
    synchronized(x){
          x.notify()
         //或者wait()
    }wait释放对象锁,使得其他线程可以使用同步控制块或者方法。
      

  2.   

    那为什么很多示例都是锁this呢?发帖子也有微博效果!一起用《Csdn收音机》吧!
      

  3.   

    以this做为锁定对象,意在同步操作是针对当前类所在上下文。
      

  4.   

    不一定要锁this,任何对象都可以,但是锁this比较好一点,你也可以单独创建一个锁对象专门做这个事:
    private Object mLock = new Object();
      

  5.   

    具体好在哪里?什么情况下必须锁专门的对象?
     Csdn好帮手——《Csdn收音机》即使监视社区动态!