黑马程序员技术交流社区

标题: 单例设计模式有5种还是3种 [打印本页]

作者: 墓____夜    时间: 2014-6-17 10:29
标题: 单例设计模式有5种还是3种
枚举算一种,饿汉,懒汉 。。还有两种是什么?
作者: 寻找人生目标    时间: 2014-6-17 16:15
静态内部类和双重校验锁 其实没必要记那么多的  
  1. //双重校验锁,在当前的内存模型中无效
  2. class LockSingleton{

  3.     private volatile static LockSingleton singleton;

  4.     private LockSingleton(){}


  5.     public static LockSingleton getInstance(){

  6.         if(singleton==null){

  7.             synchronized(LockSingleton.class){

  8.                 if(singleton==null){

  9.                     singleton=new LockSingleton();

  10.                 }
  11.             }

  12.         }
  13.         return singleton;

  14.     }

  15.      

  16. }
复制代码

作者: 寻找人生目标    时间: 2014-6-17 16:17
本帖最后由 寻找人生目标 于 2014-6-17 16:19 编辑

静态内部类  优点: 加载是不会初始化静态变量INSTANCE,因为没有主动使用
  1. class InternalSingleton{

  2.     private static class SingletonHolder{

  3.         private final static  InternalSingleton INSTANCE=new InternalSingleton();

  4.     }  

  5.     private InternalSingleton(){}

  6.     public static InternalSingleton getInstance(){

  7.         return SingletonHolder.INSTANCE;

  8.     }

  9. }
复制代码



双重校验锁据说什么当前内存模式不能用  搞不懂   双检查锁只有在 jdk 1.5 及以上版本才能达到单例的效果的





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2