A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 327753899 中级黑马   /  2014-11-17 14:49  /  961 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

饿汉式
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;
        }

2 个回复

倒序浏览
懒汉式多线程访问时会出现安全问题,给楼主一个建议,在记的时候能把同步和双重判断代码都记住最好,就算没有学到同步,到后面同步知识中再讲这个例子的时候也好理解。
回复 使用道具 举报
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;
          }
}












改成以上代码会更好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马