Java多线程-单例形式触及的多线程成绩

多线程下的单例:

饿汉式(不存在安然成绩)

class Single // 类一加载,对象就曾经存在了。
  {
   private Single() {
   }

   private static final Single s = new Single();
   public static Single getInstance() {
      return s;
   }
}


懒汉式

class Single1 // 类加载出去,没有对象,只能调用getInstance办法时,//才会创建对象。延迟加载
   {
   private static Single s = null;
   private Single() {
   }

   public static Single getInstance() {
      if (s == null) {
        synchronized (Single1.class) {
           if (s == null) {
              s = new Single();
           }
        }
      }
      return s;
   }
}

应用两个if(s==null),是为了进步效力,增添断定锁的次数。