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

2018-10-24  本文已影响0人  G_dalx

单例设计模式:
懒汉式(延迟加载 等你需要的时候再创建对象 在多线程中会出现安全问题):
解决安全问题 加了同步操作 但是会降低效率 怎么解决效率低的问题 在单例模式中用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;
   }
}
上一篇 下一篇

猜你喜欢

热点阅读