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

大家好我是菜鸟阿贵
今天和大家分享单例模式之懒汉模式和饿汉模式

1:首先说懒汉模式,顾名思义,就是很懒,他不会首先就创建对象,而是有一个判断才回去创建爱你实例化对象,例如:

public class TestSinton {
    //懒汉式(线程不安全)(除非在公共方法上面添加锁修饰)
    //不先创建实例对象,而是通过判断才会创建实例对象,
    //因为一开始实例化对象是null,所以没有私有化构造器
    private static  TestSinton sinton = null;

    public  static  TestSinton getInstance(){
        if (sinton == null){
            sinton = new TestSinton();
        }
        return  sinton;
    }

2:上面的代码我们可以看出来,首先会定义实例化对象为nul,只有在if判断中才会去创建实例化对象并且返回!

3:饿汉式
1:顾名思义就是在类加载的时候就创建好了实例化对象:

    //饿汉式(线程安全)
    //在一开始就实例化对象,实例化单例对象,拥有私有化构造器,一个公共的方法供别人调用!
    private  static final  TestSinton test = new TestSinton();

    private  TestSinton(){

    }
     public  static TestSinton getInstance1(){
        return  test;
     }

2:上面的代码我们可以看出来:
1:饿汉式是在类加载式就提前实例化对象,并且拥有让外部调用不到的私有化构造器,只提供一个公共的方法供他人调用!

4:注意的是:如果懒汉式没有加锁(synchronized)关键字进行修饰的时候,会导致线程不安全!
2:而饿汉式是线程安全的,因为一开始他就创建好了实例化对象不可改变!

-----------共勉-------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章