Ich komme mit dieser Frage bei der Implementierung Singleton-Muster in Java. Auch wenn das unten aufgeführte Beispiel nicht mein richtiger Code ist, aber dem Original sehr ähnlich ist.Wie zu synchronisieren statische Methode in 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
}
}
Weil ich über das Verhalten einer statischen synchronisierten Methode nicht ganz sicher bin, erhalte ich einen Vorschlag von Google - habe nicht (oder so wenig wie möglich) mehr statischen Synchron Methoden in der gleichen Klasse. Ich denke, wenn eine statische synchronisierte Methode implementiert wird, wird eine Sperre zum Klassenobjekt verwendet, so dass mehrere statische synchronisierte Methoden die Leistung des Systems beeinträchtigen können.
Bin ich richtig? oder verwendet JVM einen anderen Mechanismus zur Implementierung der statischen Synchronisierungsmethode? Was ist die beste Vorgehensweise, wenn ich mehrere statische synchronisierte Methoden in einer Klasse implementieren muss?
Danke euch allen!
Mit freundlichen Grüßen!
Ist Ihr echten Code betrifft auch faul Initialisierung? Weil das normalerweise eine Verschwendung von Code und Entwicklerzeit ist; Das Feld in seiner Deklaration zu initialisieren ist in 99% der Fälle richtig und macht die Synchronisation überflüssig. –