Если у меня есть 2 синхронизированных метода в одном классе, но каждый из них обращается к различным переменным, может ли 2 потока одновременно обращаться к этим двум методам? Находит ли замок объект, или он становится таким же конкретным, как переменные внутри синхронизированного метода?
Пример:
class X {
    private int a;
    private int b;
    public synchronized void addA(){
        a++;
    }
    public synchronized void addB(){
        b++;
    }
}
Могут ли 2 потока одновременно обращаться к одному экземпляру класса X, выполняющему x.addA() и x.addB()?
