public class Singleton {//饿汉式单例模型,类初始化时,立即加载这个对象,线程安全
private static Singleton simple=new Singleton();//方法不同步,调用效率高
public static Singleton getInstance(){return simple;}
private Singleton(){}}
懒汉式单例模式
public class SingletonDemo1 {//懒汉式单例模式,不初始化对象,延迟加载,资源利用率高,并发效率低
private SingletonDemo1(){}
private static SingletonDemo1 s;//方法同步,调用效率低
public static synchronized SingletonDemo1 getInstance(){if(s==null){
s=new SingletonDemo1();}return s;}}
静态内部类实现方式(也是一种懒加载)
public class SingletonDemo2 {//静态内部类实现方式(也是一种懒加载)//线程安全,兼备了并发高效调用和延迟加载的优势//static final 保证了内存中只有一个实例存在,而且只能被赋值一次
private static class SingletonClassInstance{
private static final SingletonDemo2 s=new SingletonDemo2();}
public static SingletonDemo2 getInstance(){return SingletonClassInstance.s;}
private SingletonDemo2(){}}
枚举实现单例模式
public enum SingletonDemo3 {//枚举实现单例模式,枚举本身就是单例模式,由jvm提供保障,避免反射和反序列化的漏洞//无延迟加载
INSTANCE;
public voidSingletonOperation(){}}