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