Tengo 2 métodos sincronizados en una clase decir method1() y method2(). Un hilo dice "Subproceso 1" mantiene el bloqueo de ese objeto de la clase ejecutando el método sincronizado1(). ¿Puede otro subproceso decir "Subproceso 2", acceder al bloqueo mediante el método2() al mismo tiempo mientras se mantiene "Subproceso 1" La cerradura.dos métodos sincronizados diferentes del mismo objeto?
Este caso es análogo a la clase java.util.Vector que tiene métodos add() y remove() sincronizados. Por favor, explique este caso también.
Gracias Borealid .. Pero si este es el caso, ¿Por qué Java proporciona una sincronización específica a los métodos, que pueden simplemente proporcionan para la ¿toda la clase? – JavaUser
@JavaUser: 'synchronized (this)' no significa que toda la clase está 'sincronizada'. Significa que adquieres el bloqueo de objeto de la instancia en la que se invocó el método. No necesariamente quiere que * todos * los métodos estén 'sincronizados' (de hecho, rara vez lo hará). Para obtener el rendimiento del código multiproceso, debe usar el menor número de bloqueos posible mientras se preserva la corrección del programa: cada vez que tenga un bloqueo contendido, un hilo esperará y no hará nada. – Borealid
@ Borealid ... el momento que definí sincronizado en cualquier método significa que todo el objeto está bloqueado cuando llamo a ese método. ¿Estoy en lo correcto? – JavaUser