Il existe de nombreuses façons d'écrire des singletons, et cet exemple est un moyen d'écrire des singletons paresseux. Ce qui doit être noté dans des environnements de concurrence élevés:
1. Lorsqu'un singleton accède simultanément et appelle sa méthode de GetInstance correspondante, il entraînera également la création d'objets d'instance de plusieurs instances, et le verrouillage est nécessaire.
2. Utilisation de synchronisée est une meilleure solution. L'avantage est que le code est concis, et l'inconvénient est que la maintenance ne peut pas être gérée et maintenue lors de la lancement d'une exception, donc le système est en bon état.
3. Les paramètres de verrouillage affichés sont une bonne solution.
Le code utilisant le verrouillage est le suivant:
Demo de package; import java.util.concurrent.locks.lock; import java.util.concurrent.locks.reentrantlock; / ** * Utilisation de référence * @author watson_xu * @date 2012-1-8 04:31:09 PM * / public final class singletonContext {private static singletonContext sc = null; private singletonContext () {} Lock statique privé Lock = new reentrantLock (); public static singletonContext getInstance () {if (sc == null) {lock.lock (); if (sc == null) {try {sc = new singletonContext (); } enfin {lock.unlock (); }} return sc; }}Lors de l'utilisation de synchronisés, le code est le suivant:
Demo de package; / ** * Référence à l'utilisation * @author watson_xu * @Date 2012-1-8 04:31:09 PM * / public final class singletonContext {private static singletonContext sc = null; private singletonContext () {} public static synchronisé singletoncontext getInstance () {if (null == sc) {sc = new singletonContext (); } return new singletonContext (); }}Pour voir plus de syntaxe Java, vous pouvez suivre: "Penser dans Java Chinese Manual", "JDK 1.7 Reference Manual English Version", "JDK 1.6 API Java Chinese Reference Manual", "JDK 1.5 API Java Chinese Reference Manual". J'espère également que tout le monde soutiendra davantage Wulin.com.