0
在下面的代码snippet同步上的其他对象在Java
public class MsLunch {
private long c1 = 0;
private long c2 = 0;
private Object lock1 = new Object();
// private Object lock2 = new Object();
private Dummy lock2 = new Dummy();
public void inc1() {
synchronized(lock1) {
c1++;
}
}
public void inc2() {
synchronized(lock2) {
c2++;
}
}
}
我已经改变用来保护C2计数的锁定对象。我使用了一个虚拟类,它与MsLunch类没有关系。是好的,或者我应该总是把锁放在当前类的对象上(“this”或MsLunch对象或父类Object)。 请回答,因为我一直在努力理解用于同步块的对象的作用。 同步块成员字段和变量必须由用于锁定的对象持有吗?
另外,在使用单个对象的实例方法多种锁对象可以使僵局更容易。 – 2014-09-21 20:42:17