Java三种单例模式实现
一、 饿汉式 public class SingletonHungry{ //构造器私有化,防止外部调用 private SingletonHungry(){ }
//类初始化时立即加载(感觉很饿),没有延时加载的优势,线程安全 private static SingletonHungry instance = new SingletonHungry();
//供外部调用,没有同步,效率高 public static SingletonHungry getInstance(){ return instance; } }
二、懒汉式
public class SingletonLazy{
private SingleLazy(){
}
//类初始化时,只声明一个对象,但不初始化对象
private static SingletonLazy instance;
//加了同步来保证只创建一个对象,但也造成了效率低的问题,线程安全
public static synchronized SingletonLazy getInstance(){
if(instance==null){
instance = new SingletonLazy();
}
return instance
}
}
三、静态内部类式【比前两种更优,推荐】
public class SingletonStaticClass{ private SingletonStaticClass{ } //只有在用到内部类的静态属性时才会被加载,可以延时加载 private static class SingletonClass{ private static final SingletonStaticClass instance = new SingletonStaticClass(); }
//方法没有同步,效率高 public static SingletonStaticClass getInstance{ return SingletonClass.instance; } }
[ 版权声明 ]:
本文所有权归作者本人,文中参考的部分已经做了标记!
商业用途转载请联系作者授权!
非商业用途转载,请标明本文链接及出处!