解决方案 »

  1.   

    当别的地方像下面这样写代码的时候,个人觉得会出问题,应该会死锁。
            synchronized (toAccount ) {            synchronized (fromAccount) {
                    ...                }            }        }
      

  2.   

    1)搞这么多synchronized干啥?就外围的一个synchronized就够了,你把对象锁一次就可以了,别人已经拿不到了,你又锁一次。这又不是实际生活的双保险。多余,拿掉2)建议把抛新异常的代码用try catch-finally包围起来,然后在finally这里优雅的用notify释放锁。
    记住notify也是要用try-catch包起来
      

  3.   

    才看到你的两个synchronized的对象不是同一个。两个synchronized是有必要的。
    不过为何不用数据库事物来进行转账呢?把这个过程用数据库事物来完成会更好
      

  4.   

    是的, 就是 发生异常的需要 处理,然后 需要 调用 notifyall方法 吧,我认为