Java-单例模式-线程安全问题

单例设计模式:
懒汉式(延迟加载 等你需要的时候再创建对象 在多线程中会出现安全问题):
解决安全问题 加了同步操作 但是会降低效率 怎么解决效率低的问题 在单例模式中用if对单例对象进行双重判断解决。

class Single{
    private static Single s = null;
    private  Single () {
    }
    public static Single getInstense{
      if( s == null)
          s = new Single();
      return s;
    }
}

解决安全问题:

class Single{
    private static Single s = null;
    private  Single () {
    }
    public static Single getInstense{
      if( s == null){
              synchronize(Single.class) {
                  if( s == null)
                  s = new Single();
              }
       }
      return s;
    }
}

饿汉式(不管你需不需要这个对象创建了再说 在多线程中对对象的操作只有一条 所以相对安全):

class Single{
  private static final Single Single_getInsense = new Single();
  private Single(){
  }
  public static Single getInstense{
   return  Single_getInsense;
   }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。