синхронизация с этим фиктивным объектом
До сих пор я видел использование синхронизированного блока, но недавно я узнал, что использование фиктивного объекта предпочтительнее. Я нашел следующую тему, связанную с этим.
Java синхронизирует метод блокировки объекта или метода?
Таким образом, в приведенном ниже коде два разных объекта не могут запускать addA и addB одновременно, поскольку оба используют это для блокировки.
private int a;
private int b;
public synchronized void addA(){
a++;
}
public synchronized void addB(){
b++;
}
Я смущен, если я использую фиктивный объект для блокировки, что будет отличаться, если я использую строку ниже в обоих методах для синхронизации? Потому что все равно они будут иметь такой же замок.
synchronized(dummyObject){
...
}
Так что это значит, что у меня должно быть два разных фиктивных объекта для каждого метода, который будет использоваться с sycnhronized как?
public void addA(){
synchronized(dummyObj1){
a++;
}
}
public void addB(){
synchronized(dummyObj2){
b++;
}
}