2011-03-07 33 views
6

Duplicar posibles:
How do synchronized static methods work in Java?¿Qué hace sincronizado en un método estático?

Me preguntaba qué pasaría si sincronizada se utilizó en un método estático. ¿La clase consigue un bloqueo en ese método? ¿Cómo es diferente de sincronizado en un método no estático?

Gracias

+0

Los métodos estáticos sincronizados bloquean la clase, a diferencia del objeto. http://download.oracle.com/javase/tutorial/essential/concurrency/locksync.html – CMR

Respuesta

-1

Sí, la clase "entiende" la cerradura en lugar de la instancia (como Bruno señaló, esta terminología es imprecisa. El hilo se pone la cerradura utilizando la clase de objeto o la instancia que el bloqueo de objetos) Es decir, podría tener 3 hilos ejecutando simultáneamente 3 métodos sincronizados si esos métodos están sincronizados en sus instancias individuales. Si el método está sincronizado en la clase, solo un hilo puede ejecutarlo.

+0

Entonces, ¿cuál es el punto de sincronización de métodos no estáticos? Lo siento si esta es una pregunta estúpida: S – blaa

+0

Sincronización de un método de instancia protege contra cuando dos hilos están tratando de operar en la _same_ instancia. El subproceso 1 y el subproceso 2 tienen una referencia a la instancia A. –

+0

"la clase obtiene el candado en lugar de la instancia"? Una clase nunca obtiene un bloqueo. Es un hilo que "obtiene" bloqueos, y estos están asociados con objetos. –

4

This question tiene muchas respuestas de alta calidad a la pregunta anterior.

Cuestiones relacionadas