昨晚一晚没搞定的一个BUG: synchronized(obj){obj.notify()}这句话怎么会有错误, 在网上查了半天不得其解, 后来在google group中找到答案. 原因是obj不能是Boolean, String这样的类型, 因为这些类型一给它们新值, 它们就指向了新的对象了. 应该为每一个这种类型配一个锁.
详细的讨论见: google group 相关讨论
详细的讨论见: google group 相关讨论
本文探讨了在Java中使用synchronized与notify方法时遇到的一个常见错误:当锁对象为Boolean或String类型时,由于赋值操作导致指向新对象,从而引发的问题。文章通过实例解释了如何正确地为这些不可变类型分配锁。
615