Es gibt viele Möglichkeiten, Singletons zu schreiben, und dieses Beispiel ist eine Möglichkeit, faule Singletons zu schreiben. Was sollte in hohen Parallelitätsumgebungen festgestellt werden:
1. Wenn ein Singleton gleichzeitig zugreift und seine entsprechende GetInstance -Methode aufruft, werden auch mehrere Instanzobjekte erstellt, und es ist ein Sperren erforderlich.
2. Synchronisierte ist eine bessere Lösung. Der Vorteil ist, dass der Code präzise ist und der Nachteil ist, dass die Wartung nicht gehandhabt und aufrechterhalten werden kann, wenn eine Ausnahme ausgelöst wird, sodass sich das System in einem guten Zustand befindet.
3. Die angezeigten Sperreinstellungen sind eine gute Lösung.
Der Code, der die Sperre verwendet, lautet wie folgt:
Paketdemo; import Java.util.concurrent.locks.lock; import Java.util.concurrent.locks.reentrantlock; / ** * Referenznutzung * @Author Watson_xu * @date 2012-1-8 04:31:09 PM */ Public Final Class SingletonContext {private statische SingletonContext sc = null; private SingletonContext () {} private static Lock = new Reentrantlock (); public static SingletonContext getInstance () {if (sc == null) {lock.lock (); if (sc == null) {try {sc = new SingletonContext (); } endlich {lock.unlock (); }} return sc; }}Bei der Verwendung von Synchronisierungen lautet der Code wie folgt:
Paketdemo; / ** * Referenz zur Verwendung * @Author Watson_xu * @date 2012-1-8 04:31:09 PM */ Public Final Class SingletonContext {private statische SingletonContext sc = null; private SingletonContext () {} public statische synchronisierte SingletonContext getInstance () {if (null == sc) {sc = new SingletonContext (); } return New SingletonContext (); }}Um mehr Java -Syntax anzuzeigen, können Sie folgen: "Denken in Java Chinese Manual", "JDK 1.7 Referenzhandbuch Offizieller Englischversion", "JDK 1.6 API Java Chinese Referenzhandbuch", "JDK 1.5 API Java Chinese Referenzhandbuch". Ich hoffe auch, dass jeder wulin.com mehr unterstützt.