单例模式的作用 保证一个类只有一个实例,并且提供访问该实例的全局访问方法。 为什么要用单例模式 1:为了性能考虑。 2:在整个程序空间使用全局变量,共享资源。 几种实现方法: 懒汉式,饿汉式,静态内部类实现 ,枚举实现。(除了) 饿汉式: // 饿汉式可以在多线程中保证单例 public class Persion{ // 持有局部,静态,常量本类实例。 private static final Persion persion = new Persionz(); // 私有,静态,常量 // 私有化构造函数 private Persion(); // 提供全局,静态的获取实例的方法 public static Persion getPersion(){ return persion; } } 懒汉式: // 懒汉式在多线程中不能保证单例 public class Persion{ private static Persion persion = null; // 私有,静态 private Persion(); public static Persion getPersion(){ if(persion == null){ persion = new Persion(); return persion; }else{ return persion; } } } 懒汉式的双重检查: // 保证多线程情况下保证单例 public class Persion{ private static Persion persion = null; // 私有,静态 private Persion(); public static Persion getPersion(){ // 懒汉式的双重检测锁 if(persion == null){ synchronized(Persion.class){ if(persion == null){ persion = new Persion(); } } } return persion; } } # 反射入侵: