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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

单例模式又分为:饿汉式与懒汉式;

饿汉式:先初始化对象,
                一进内存,就已经创建好了对象
class Single{
        private Single(){};
        private static Single s=new Single();
        public static Single getInstance(){
        return s;
       }
}
懒汉式:对象是方法被调用时,才初始化,也叫对象的延迟加载
                类进内存时,对象还没有存在,只有调用了相应的方法,才建立对象
class Single{
        private Single(){};
        private static Single s=null;
        public static Single getInstance(){
                if(s==null){
                           s=new Single();
                }
                return s;
      }
}

如果用懒汉式的话,会遇到多线程并发的问题,多线程同时访问的话,会出问题,还得给 代码加锁,
   public static Single getInstance(){
                if(s==null){
                          synchronized(Single.class){
                                  if(s==null)
                                      s=new Single();
                          }           
                }
                return s;
      }
就会显的代码有点多,
所以建议大家用饿汉式,不会出现安全问题,

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马