Java基础部分 设计模式(单例) Day42 2019-0

2019-01-06  本文已影响0人  Ernest_Chou

Java基础部分

14 设计模式

设计模式就是经过前人无数次的实践总结出来的,设计过程可以反复使用的、可以解决特定问题的设计方法。

    public class LazySingleton
{   
    /**
     * 注意:如果编写的是多线程程序,则不要删除代码中的关键字 volatile 和 synchronized,否则将存在线程非安全的问题。
     * 如果不删除这两个关键字就能保证线程安全,但是每次访问时都要同步,会影响性能,且消耗更多的资源,这是懒汉式单例的缺点。
     *
     */
    private static volatile LazySingleton instance=null;    //保证 instance 在所有线程中同步
    private LazySingleton(){}    //private 避免类在外部被实例化
    public static synchronized LazySingleton getInstance()
    {
        //getInstance 方法前加同步
        if(instance==null)
        {
            instance=new LazySingleton();
        }
        return instance;
    }
}
public class HungrySingleton
{   
    /**
    * 饿汉式单例在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以是线程安全的,可以直接用于多线程而不会出现问题。
    *
    */
    private static final HungrySingleton instance=new HungrySingleton();
    private HungrySingleton(){}
    public static HungrySingleton getInstance()
    {
        return instance;
    }
}
public class Singleton {  
    private volatile static Singleton singleton;  
    private Singleton (){}  
    public static Singleton getSingleton() {  
    if (singleton == null) {  
        synchronized (Singleton.class) {  
        if (singleton == null) {  
            singleton = new Singleton();  
        }  
        }  
    }  
    return singleton;  
    }  
} 
上一篇 下一篇

猜你喜欢

热点阅读