例如,我有一个类,在多线程环境下有2个计数器:
public class MyClass {
private int counter1;
private int counter2;
public synchronized void increment1() {
counter1++;
}
public synchronized void increment2() {
counter2++;
}
}
有两个不相关的增量操作。但我使用相同的对象进行锁定(this
)。
如果客户端同时调用increment1()
和increment2()
方法,那么increment2
调用是否会被阻塞,直到increment1()
释放this
监视器?
如果是真的,这是否意味着我需要为每个操作提供不同的监视器锁(出于性能原因)?