omportamento de sincronização reentrante com instruções sincronizad

Tenho dois métodos em uma classe java que possuem um bloco de código que sincroniza usando o mesmo objeto. Eu entendo que no esquema de sincronização JAVA os bloqueios adquiridos por um thread são reentrantes. Com isso, posso dizer com segurança que o código abaixo não causará problemas em todos os casos?

public class Someclass  
{  
  private static final Object LCK_OBJ = new Object();  
  //.....

  publc void method1()  
  {  
    //some code....  
    synchronized(LCK_OBJ)  
    {  
        //some sychronized code.  
        method2(..);  
    }  
    //some more code....  
  }  

  protected static final void method2(..)  
  {  
      Someclass ref = null;  
      //some code which gets different other references of SomeClass in a loop....  
      ref.method3(..);  
  }  

  publc void method3()  
  {  
    //some code....  
    synchronized(LCK_OBJ)  
    {  
      //some sychronized code.  
    }  
    //some more code....  
  }  

}//end of class    

questionAnswers(4)

yourAnswerToTheQuestion