variable threads lock java synchronization

threads - synchronized class in java



sincronizar(esto) vs sincronizar(MyClass.class) (2)

Posible duplicado:
Bloque sincronizado de Java para .class

Estaba leyendo un article sobre sincronización. Estoy confundido en los siguientes puntos y necesito más aclaraciones

1) Para bloque de sincronización. Cómo

synchronize(this){ // code }

difiere de

synchronize(MyClass.class){ //code }

2) La sincronización del método de instancia significa que los subprocesos tendrán que obtener un bloqueo exclusivo en la instancia, mientras que la sincronización del método estático significa que los subprocesos tendrán que adquirir un bloqueo en toda la clase (corríjame si me equivoco). Entonces, si una clase tiene tres métodos y uno de ellos está sincronizado estáticamente, entonces si un subproceso obtiene bloqueo en ese método significa que adquirirá bloqueo en toda la clase, lo que significa que los otros dos también se bloquearán y ningún otro método podrá ¿Acceder a esos dos métodos ya que toda la clase tiene bloqueo?


El primer ejemplo (adquirir bloqueo en this ) está destinado a usarse en métodos de instancia, el segundo (adquirir bloqueo en objeto de class ) - en métodos static .

Si un subproceso adquiere bloqueo en MyClass.class , otros subprocesos tendrán que esperar para ingresar al bloque sincronizado de un método static que se encuentra este bloque. Mientras tanto, todos los subprocesos podrán adquirir un bloqueo para una instancia particular de este Clasificar y ejecutar métodos de instancia.


MyClass.class y this son cosas diferentes, son referencias diferentes a diferentes objetos.

this - es la referencia a esta instancia particular de clase, y

MyClass.class : es la referencia al objeto de descripción MyClass .

Estos bloques de sincronización se diferencian en que el primero sincronizará todos los subprocesos que se relacionan concretamente con esta instancia de MyClass , y el segundo sincronizará todos los subprocesos independientemente de qué objeto se llamó este método.