黑马程序员技术交流社区

标题: 单列设计模式 [打印本页]

作者: 327753899    时间: 2014-11-17 14:49
标题: 单列设计模式
饿汉式
class Single类已加载对象就已经存在了
{
        private static Single s = new Single();
        private Single(){}
        public static Single getInstance()
        {
                return s;
        }
}
懒汉式
class single2类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象
                        延迟加载形式
               
{
        private static Single2 s = null;
        private Single2(){}
        public static Single2 getInstance()
        {
                if(s==null)
                        s = new single2();
                return s;
        }

作者: 月老~牵红线    时间: 2014-11-17 15:03
懒汉式多线程访问时会出现安全问题,给楼主一个建议,在记的时候能把同步和双重判断代码都记住最好,就算没有学到同步,到后面同步知识中再讲这个例子的时候也好理解。
作者: kakawin    时间: 2014-11-17 21:49
class single2  //类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象
                        //延迟加载形式
               
{
         private static Single2 s = null;
         private Single2(){}
         public static Single2 getInstance()
         {
                 if(s==null)
                 {
                            // 如果不加synchronized和双重锁定检查搜索会导致对线程的访问不安全
                          synchronized (single2.class)
                         {
                              if(s==null)
                              {
                                      s = new single2();
                              }
                         }
                  }
                 return s;
          }
}












改成以上代码会更好





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