Um sicherzustellen, dass nur eine Instanz der Klasse in einer Multi-Thread-Umgebung erstellt werden, erstellen wir eine Singleton-Klasse mit der folgenden Struktur.So erhalten Sie die Fahrt von Null Einchecken Singleton Entwurfsmuster in Java für eine bessere Leistung
class Singleton {
private volatile static Singleton _instance;
private Singleton() {
// preventing Singleton object instantiation from outside
}
public static Singleton getInstanceDC() {
if (_instance == null) {
synchronized (Singleton.class) {
if (_instance == null) {
_instance = new Singleton();
}
}
}
return _instance;
}
}
Aber ist es eine Möglichkeit, die Wertentwicklung der Klasse, indem ich Fahrt der Strafe zu verbessern, dass jeder Thread ein null check
tun zu zahlen hat, während bevor das Objekt aus der statischen Funktion bekommen?
Null-Checks sind wirklich billig. Ich würde mich nicht um Optimierung kümmern, auch wenn es möglich wäre, das zu optimieren, was ich bezweifle. Vor allem CPUs sind _groß_ bei der Optimierung, wenn Checks fast immer auf die gleiche Art und Weise laufen. Dies ist im Prinzip kostenlos und Sie sollten _really_ etwas anderes finden, worüber Sie sich Sorgen machen müssen. –
Kann man '_instance' nicht einfach statisch initialisieren, anstatt es beim ersten Zugriff zu erstellen? Auf diese Weise müssen Sie nicht bei jedem Zugriff auf Null prüfen. –
Siehe Effektive Java zweite Ausgabe – AlexWien