黑马网友
发表于 2011-9-28 22:49:42
板凳
两个方法只有使用的锁是同一个对象才能达到同步效果。
静态的同步方法,使用的锁是该方法所在类的字节码文件对象 类名.class
普通的同步方法,使用的锁是该类的实例对象this,
所以静态的同步方法和普通的同步方法使用的锁不是同一个对象,不能达到同步效果。
解决办法:
要想让两个方法同步,那么两个对象使用的锁就必须是同一个对象,让普通方法也使用 本类的字节码对象 类名.class 就可以达到同步效果了。
把普通方法改成
synchronized(本类名.class){
调用普通方法;
}
就解决问题了 |
|