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++;
    }
}

questionAnswers(2)

yourAnswerToTheQuestion