在网上看到一篇博客,主题是为什么wait()方法要放在同步块中?
博主在解释中说了这样一段话
看来对于多线程我的理解还很弱
我疑惑的是怎么理解作者的这个说法?
是因为这样加锁没有作用所以java要求必须在对象的同步代码块里(为什么没作用)?
还是因为java要求必须在对象的同步代码块里所以这样做没效果?

解决方案 »

  1.   

    wait()是释放锁然后等待获取锁,当然要先获得锁才行,同步块里才代表获得锁嘛
      

  2.   

    谢谢,是我没有表述清楚,我疑惑的是前文引用中那两段伪代码,
    是因为Java的机制,那两段伪代码会出问题
    还是说因为在逻辑上那两段伪代码就有漏洞,会出现lost wake up问题,所以Java在设计时wait()才被设计成了现在这种机制?
      

  3.   

    还是没弄懂你的意思。
    wait()也不是专门为生产-消费队列设计的啊。