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; } }

 

posted @ 2021-04-08 20:23  CEO雷总  阅读(131)  评论(0编辑  收藏  举报