Hay muchas formas de escribir singletons, y este ejemplo es una forma de escribir singletons perezosos. Lo que debe tenerse en cuenta en entornos de alta concurrencia:
1. Cuando un singleton accede simultáneamente y llama a su método de getInstance correspondiente, también causará que se creen objetos de instancia múltiples, y el bloqueo es necesario.
2. Usar sincronizado es una mejor solución. La ventaja es que el código es conciso, y la desventaja es que el mantenimiento no se puede manejar y mantener al lanzar una excepción, por lo que el sistema está en un buen estado.
3. La configuración de bloqueo que se muestra es una buena solución.
El código que usa el bloqueo es el siguiente:
demostración de paquete; import java.util.concurrent.locks.lock; import java.util.concurrent.locks.reentrantlock; / ** * Uso de referencia * @author watson_xu * @Date 2012-1-8 04:31:09 PM */ public Final Class SingletOnContext {private static singletOnContext sc = null; private singletOnContext () {} bloqueo de bloqueo estático privado = new ReentrantLock (); public static singletOnContext getInStance () {if (sc == null) {lock.lock (); if (sc == null) {try {sc = new SingletInContext (); } Finalmente {Lock.unlock (); }} return sc; }}Cuando se usa sincronizado, el código es el siguiente:
demostración de paquete; / ** * referencia para usar * @author watson_xu * @date 2012-1-8 04:31:09 pm */ public final singletOnContext {private static singletOncontext sc = null; private singletOnContext () {} public static sincronizado sincronizado sincronizado sincronizado getInstance () {if (null == sc) {sc = new SingletEncontext (); } return New SingletEnContext (); }}Para ver más sintaxis de Java, puede seguir: "Pensar en el manual de chino Java", "JDK 1.7 Manual de referencia Versión oficial de inglés", "JDK 1.6 Manual de referencia chino API Java", "JDK 1.5 API Java Manual de referencia chino". También espero que todos apoyen más a Wulin.com.