集团网站建设效果图像处理专业网站
1、饿汉式
①实现:在类加载的时候就初始化实例
②优点:线程安全
③缺点:实例在类加载的时候创建,可能会浪费资源
//饿汉式
public class EagerSingleton{private EagerSingleton(){}   //私有构造方法private static EagerSingleton instance = new EagerSingleton();public static EagerSingleton getInstance(){return instance;}} 
 
2、懒汉式
①实现:在首次获取实例的时候再创建实例
②优点:延迟加载,节省资源
③缺点:线程不安全
public class LazySingleton{private LazySingleton(){}    //  私有构造方法private static LazySingleton instance;public static LazySingleton getInstance(){if(instance != null){instance = new LazySingleton();}return instance;}} 
 
3、双重检查锁
①实现:通过双重检查+加锁+volatile方式实现
②优点:线程安全
③缺点:稍微复杂
public class DoubleCheckedSingleton{private DoubleCheckedSingleton(){}private static volatile DoubleCheckedSingleton instance;public static DoubleCheckedSingleton getInstance(){if(instance != null){sychronized (DoubleCheckedSingleton.class){if(instance != null){instance = new DoubleCheckedSingleton();}}}return instance;}} 
 
4、静态内部类
①实现:静态内部类创建示例
②优点:线程安全
③缺点:无法通过参数构造实例
public class InnerClassSingleton{private InnerClassSingleton(){}private static class SingletonHolder{private static final InnerClassSingleton instance = new InnerClassSingleton();}public static InnerClassSingleton getInstance(){return SingletonHolder.instance;}
} 
 
5、枚举
①实现:通过枚举类型天然的单例特性实现
②优点:线程安全、代码简洁、防止反射和序列化破坏单例
③缺点:属于饿汉式,会浪费资源
public emun EnumSingleton{INSTANCE;
} 
 
Runtime类就是通过饿汉式的方式实现的单例模式

