单例模式---懒汉模式与饿汉模式

Posted jixiegongdi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式---懒汉模式与饿汉模式相关的知识,希望对你有一定的参考价值。

单例模式:
1)一个类只能创建一个实例
2)构造函数和静态变量(加载类时即初始化)需为private
3)get方法应该为public static,可供全局访问



//
懒汉模式 public class lazySingleton { private static lazySingleton singleton=null; //懒,所以就不实例化了,加载类较快,但是第一次访问类可能会有点慢 private lazySingleton(){ //nothing } public static lazySingleton getSingleton(){ if(singleton==null){ synchronized (this){ if(singleton==null) //这里的二次判断很有必要啊,在多线程中同时到达第一个if的可能有多个,若此处没有二次二次判断,会导致new singleton()同步执行多次。 singleton=new lazySingleton(); } } return singleton; } }

 

//饿汉模式
public class hungrySingleton {
    private static final singleton=new hungerySingleton();//此处最好不要丢掉final

    private hungrySingleton(){
        //noting
    }
    public static hungrySingleton getSingleton(){
        return singleton();
    }
}

参考:Singleton单例模式(懒汉方式和饿汉方式)

          单例模式中的懒汉和饿汉模式的区别

 

以上是关于单例模式---懒汉模式与饿汉模式的主要内容,如果未能解决你的问题,请参考以下文章

单例模式---懒汉模式与饿汉模式

单例模式的懒汉模式与饿汉模式之间的对比 C++

单例设计模式的懒汉式与饿汉式

单例模式之懒汉式与饿汉式

设计模式:单例模式,懒汉与饿汉(转)工厂模式

单例模式,饿汉与懒汉