Se me ocurre esta pregunta al implementar el patrón de singleton en Java. Aunque el ejemplo que figura a continuación no es mi código real, es muy similar al original.Cómo sincronizar el método estático en java
public class ConnectionFactory{
private static ConnectionFactory instance;
public static synchronized ConnectionFactory getInstance(){
if(instance == null){
instance = new ConnectionFactory();
}
return instance;
}
private ConnectionFactory(){
// private constructor implementation
}
}
Porque no estoy muy seguro sobre el comportamiento de un método sincronizado estático, que conseguir una cierta sugerencia de Google - no tienen (o lo menos posible) múltiples métodos sincronizados estáticas en la misma clase. Supongo que cuando se implementa el método sincronizado estático, un bloqueo pertenece al objeto Class, de forma que múltiples métodos sincronizados pueden degradar el rendimiento del sistema.
¿Estoy en lo cierto? o JVM utiliza otro mecanismo para implementar el método estático sincronizado? ¿Cuál es la mejor práctica si tengo que implementar múltiples métodos sincronizados estáticos en una clase?
¡Gracias a todos!
Saludos cordiales!
es su código real también preocupados por la inicialización perezosa? Porque eso suele ser un desperdicio de código y tiempo de desarrollador; Inicializar el campo en su declaración es lo correcto para hacer el 99% del tiempo y hace que la sincronización sea innecesaria. –