private Object x = new Object();
public void doA() {
   synchronized(x){
       x = new Object();
       //do something
    }
}
public void doB() {
    synchronized(x) {
        //do something 
    }
}
lets say doA() and doB() was called simultaneously but doA() is proceeding first. so B will be blocked until doA() is completed     
is this true even if doA() modifies x in the x = new x call? or after this line x = new x in doA() doB() will no longer be blocked because x has changed?    
 
     
     
    