A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 王训印 中级黑马   /  2015-7-21 20:48  /  307 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例模式代码3步骤:1.将构造方法私有化。 2.在类中创建一个本类对象。 3.提供一个方法可以获取该类对象。

单例模式分三种:懒汉式单例、饿汉式单例、登记式单例,我主要比较饿汉式与懒汉式的区别:从线程安全角度来说,赖汉时线程不安全,恶汉式线程安全。下面把懒汉式改成线程安全。


饿汉式关键代码:  
public class Singal
{  
    //将构造方法私有化
    private Singal() {}  
    //在类中创建一个本类对象
    private static  Singal single = new Singal();  
    //提供一个方法可以获取该类对象  
    public static Singal getInstance()
    {  
        return single;  
    }  
}   

懒汉式单例代码:
public class Singal {  
       
        private static Singal single=null;  
    private Singleton() {}  
    public static Singal getInstance() {  
         if (single == null) {   
             single = new Singal();  
         }   
        return single;  
    }  
}  

懒汉式线程安全代码:
public class Singal
{  
    private static Singal single=null;  
    private Singleton() {}  
    public static Singal getInstance()
    {   
        if(singal == null)
        {
                synchronized(Singal.class)
                if(singal == null)
                {
                        singal = new Singal;
                }
        }
    }  
}  


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马