Wie erstelle ich eine Singleton -Klasse in Java?
Eine Singleton -Klasse stellt sicher, dass nur eine Instanz besteht, die durch private Konstruktor, statische Instanz und statische GetInstance () -Methode erreicht wird. 2. Die Gewindesicherheit kann durch Synchronisation oder doppelt überprüfte Verriegelung mit flüchtigem Umfang implementiert werden. 3. Die eifrige Initialisierung erstellt die Instanz bei der Klassenlast und sorgt für die Sicherheit der Thread ohne Synchronisation. 4. Enum -Singletons werden für die Sicherung der Serialisierung und Reflexion empfohlen.
Eine Singleton -Klasse in Java stellt sicher, dass im gesamten Lebenszyklus der Anwendung nur eine Instanz der Klasse erstellt wird. Dies ist nützlich, wenn genau ein Objekt erforderlich ist, um Aktionen über ein System zu koordinieren, z. B. Konfigurationsmanager oder Protokollierungsdienste.
Grundstruktur einer Singleton -Klasse
Um eine Singleton -Klasse zu erstellen, befolgen Sie die folgenden wichtigen Schritte:
- Machen Sie den Konstruktor privat , um eine externe Instanziierung zu verhindern.
- Erstellen Sie eine private statische Instanz der Klasse.
- Stellen Sie eine öffentliche statische Methode zur Verfügung, um auf die Instanz zuzugreifen (üblicherweise GetInstance () ).
private statische Singleton -Instanz;
private Singleton () {}
public static singleton getInstance () {
if (instance == null) {
Instance = new Singleton ();
}
Rückkehrinstanz;
}
}
Thread-safe Singleton mit Synchronisation
In Multithread -Umgebungen können mehrere Threads gleichzeitig auf getInstance () zugreifen und mehrere Instanzen erstellen. Um dies zu verhindern, machen Sie die Methode mit Thread-Safe:
- Fügen Sie das synchronisierte Schlüsselwort zur GetInstance () -Methode hinzu.
- Oder verwenden Sie die doppelte Überprüfung mit dem volatilen Keyword, um eine bessere Leistung zu erzielen.
private statische flüchtige Fädensafesingleton -Instanz;
private threadSafesingleton () {}
public static threadSafesingleton getInstance () {
if (instance == null) {
synchronisiert (threadSafesingleton.class) {
if (instance == null) {
Instance = new threadSafesingleton ();
}
}
}
Rückkehrinstanz;
}
}
Eifrige Initialisierung (alternativer Ansatz)
Wenn Sie kein fauler Laden benötigen, initialisieren Sie die Instanz zur Ladezeit der Klasse. Dies ist einfacher und von Natur aus fadensicher.
öffentliche Klasse Eagersingleton {private statische Final Eagersingleton Instance = new eagersingleton ();
private eagersingleton () {}
public static eagersingleton getInstance () {
Rückkehrinstanz;
}
}
Die Verwendung eines Enum ist auch eine empfohlene Möglichkeit, Singletons durch Joshua Bloch zu implementieren, da es automatisch Serialisierungs- und Reflexionsprobleme behandelt.
Grundsätzlich steuern Sie die Instanzerstellung der Instanz, sorgen Sie für den globalen Zugriff und verarbeiten Sie bei Bedarf das Fadenfaden.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Singleton -Klasse in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der direkteste Weg ist, den Speicherort zu erinnern, normalerweise in Ordnern wie Desktop, Dokumente, Downloads usw.; Wenn es nicht gefunden werden kann, können Sie die Systemsuchfunktion verwenden. Die Datei "fehlenden" ist hauptsächlich auf Probleme wie die Unaufmerksamkeit des Speicherpfads, die Namensspeicherabweichung, das Versteck oder die Cloud -Synchronisation zurückzuführen. Effiziente Verwaltungsvorschläge: Klassifizieren Sie nach Projekt, Zeit und Typ, nutzen Sie den schnellen Zugang, regelmäßig und archivieren Sie sie und standardisieren Sie die Benennung. Windows -Suche und Suche über den Datei -Explorer und die Taskleiste, während MacOS auf Finder und Spotlight angewiesen ist, was schlauer und effizienter ist. Mastering -Tools und die Entwicklung guter Gewohnheiten ist der Schlüssel.

Verwenden Sie den Parameter -cp, um das JAR zum Klassenpfad hinzuzufügen, damit das JVM seine internen Klassen und Ressourcen laden kann, wie z.

Verwenden Sie das Keyword implementiert die Benutzeroberfläche. Die Klasse muss spezifische Implementierungen aller Methoden in der Schnittstelle bereitstellen. Es unterstützt mehrere Schnittstellen und wird von Commas getrennt, um sicherzustellen, dass die Methoden öffentlich sind. Die Standard- und statischen Methoden nach Java 8 müssen nicht umschreiben.

Überprüfen Sie zunächst, ob die Netzwerkverbindung normal ist. Wenn andere Websites nicht geöffnet werden können, liegt das Problem im Netzwerk. 1. Löschen Sie den Browser -Cache und die Cookies, geben Sie Chrome -Einstellungen ein und wählen Sie durch das Durchsuchen der Browserdaten. 2. Schließen Sie die Erweiterung, und Sie können den narbenlosen Modus verwenden, um zu testen, ob er durch Plug-in-Konflikte verursacht wird. 3. Überprüfen und schließen Sie die Proxy- oder VPN -Einstellungen, um zu vermeiden, dass die Netzwerkverbindung abgefangen wird. V. 5. Chrom aktualisieren oder neu auf die neueste Version installieren, um Kompatibilitätsprobleme zu lösen; 6. Verwenden Sie andere Browser, um zu vergleichen und zu testen, um zu bestätigen, ob das Problem nur Chrom ist. Entsprechend Fehlereingaben wie Err_Connection_Timed_out oder Err_SSL_Protocol_er

Javagenericsprovidecompile-timetypesafetyandeliminatecastingbyallowingtypeparametersonclasses,interfaces,andmethods;wildcards(?,?extendsType,?superType)handleunknowntypeswithflexibility.1.UseunboundedwildcardwhentypeisirrelevantandonlyreadingasObject

Verwenden Sie die Methode datetime.strptime (), um eine Zeichenfolge in ein DateTime -Objekt umzuwandeln, und es ist erforderlich, um sicherzustellen, dass die Formatter und die Zeichenfolge genau übereinstimmen. 2. Zu den gemeinsamen Formatierern zählen %y (Vier-Bit-Jahr), %M (Monat), %D (Tag), %H (Stunde), %m (Minute), %s (Sekunden) usw.; 3. Verwenden Sie %i und %p für die Zeit mit AM/PM und verwenden Sie DateTime.FromisoFormat () direkt für ISO -Formate; 4. Wenn das Format nicht übereinstimmt, wird ein ValueError angehoben. Es wird empfohlen, DateUtil.Parser.Parse () zu verwenden, um es beim Umgang mit mehreren Formaten automatisch zu identifizieren. Die korrekte Verwendung dieser Methoden kann die Zeichenfolgen für DateTime -Objekte effizient vervollständigen

Verwenden Sie Wait () und benachrichtigen (), um das Problem der Herstellerverbraucher zu implementieren: Die synchronisierte Methode wird verwendet, um den Zugriff auf den gemeinsam genutzten Puffer zu steuern. Der Produzent wartet, wenn der Puffer voll ist, der Verbraucher wartet, wenn der Puffer leer ist, und verwendet Benoyify (), um den entsprechenden Thread aufzuwecken. 2. Verwenden Sie Blockingqueue im Java.util.Concurrent-Paket, um den Thread-Safe-Datenaustausch leichter zu implementieren, wobei die manuelle Verwaltung von Schlössern und das bedingte Warten vermieden wird.
