黑马程序员技术交流社区

标题: 单例设计模式中的饿汉式和懒汉式有什么区别? [打印本页]

作者: 普哥    时间: 2014-7-6 22:58
标题: 单例设计模式中的饿汉式和懒汉式有什么区别?
单例设计模式中的饿汉式和懒汉式有什么区别?

作者: 咖啡苏克    时间: 2014-7-7 00:09
//饿汉式:
        public class Single{
                private static Single s = new Single();
                private Single(){}
                public static Single getInstance(){
                     return s;
      }
       }

//懒汉式:
       public class Single{
                private static Single s = null;
                public static synchronized Single getInstance(){
                           if(s==null)
                                      s = new Single();
                          return s;
                 }
       }
饿汉式: 对象预先加载,在类创建好的同时对象生成,代码简练。
懒汉式:对象延迟加载,只有在调用的时候才实例化对象。

从资源利用上讲,饿汉式不如懒汉式,因为饿汉式加载类时就会创建静态对象,占据一定内存。
但懒汉式有线程安全的问题,可以通过synchronized解决,其实synchronized加在方法上比较影响性能
,虽然可以通过双重判定解决,但代码相对饿汉式复杂不少
因此建议选择饿汉式







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