Tengo una duda con respecto a la Sincronización de Java. Quiero saber si tengo tres métodos sincronizados en mi clase y un hilo adquiere el bloqueo en un método sincronizado; los otros dos serán bloqueados. Estoy haciendo esta pregunta porque estoy confundido con la siguiente declaración.¿Cómo funciona la sincronización en Java?
Mientras que un hilo está dentro de un método sincronizado de un objeto, todos los otros hilos que desean ejecutar este método sincronizado o cualquier otro método sincronizado del objeto tendrán que esperar. Esta restricción no se aplica al hilo que ya tiene el bloqueo y está ejecutando un método sincronizado del objeto. Tal método puede invocar otros métodos sincronizados del objeto sin ser bloqueado. Los métodos no sincronizados del objeto pueden, por supuesto, llamarse en cualquier momento por cualquier hilo
¿Cuál es la fuente de esa afirmación y cuál es su confusión? Parece que lo entiendes. Tenga cuidado con el punto muerto cuando acceda a un método sincronizado desde otro. – Sridhar
Re: "... otros dos estarán bloqueados". No se impedirá que el subproceso que se ejecuta actualmente que ya tiene el bloqueo invoque otro método sincronizado en el mismo objeto, sin embargo, cualquier otro subproceso se bloqueará (es decir, se obligará a esperar hasta que se les otorgue el bloqueo). Max tiene una buena respuesta que habla sobre si está bloqueando el objeto en sí mismo (es decir, esto) u otra variable de objeto por completo. – Brad