sincronizando por este objeto fictício vs
Eu já vi o uso de blocos sincronizados até agora, mas recentemente aprendi que é preferível usar objetos fictícios. Encontrei o seguinte tópico relacionado a isso.
Bloqueio de método sincronizado Java no objeto ou método?
Como um resumo, no código abaixo, dois objetos diferentes não podem executar addA e addB simultaneamente, pois ambos usam isso para bloquear.
private int a;
private int b;
public synchronized void addA(){
a++;
}
public synchronized void addB(){
b++;
}
Estou confuso se eu usar objeto fictício para bloqueio, o que será diferente se eu usar a linha abaixo nos dois métodos para sincronizar? Porque ainda teriam o mesmo bloqueio.
synchronized(dummyObject){
...
}
Então, o que significa que eu deveria ter dois objetos fictícios diferentes para cada método usar com sycnhronized as?
public void addA(){
synchronized(dummyObj1){
a++;
}
}
public void addB(){
synchronized(dummyObj2){
b++;
}
}