Classe interna e monitor

Bom dia

Para o seguinte codigo:

public class BlocoSincronizado2
{
class classeInterna{

public void metodoDaClasseInterna(){

//monitor é a classe externa
synchronized( BlocoSincronizado2.this){

}

//monitor é a classe interna
synchronized( this ){

}

}

}

}

Para o bloco syncronized numa classe interna, faz diferenca o monitor
ser a classe interna ou a externa?

TKS.

vmm, acredito que faça diferença sim. Imagine que uma thread possua o bloqueio de uma instancia de classeInterna e outra thread irá chamar um método deste mesmo objeto. Teremos as duas condições:

  1. Se no código do método estiver “synchronized( this )” a thread terá que ficar aguardando até que a outra libere o objeto

  2. Se estiver “synchronized( BlocoSincronizado2.this)” o código será executado na hora, pois a outra thread não tem bloqueio deste objeto, mas sim de um objeto da classe interna.