Java中单例模式的饿汉与懒汉

单例模式

  有些对象我们只需要一个,如:配置文件、工具类、线程池、缓存、日志对象等。

  如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一样的结果等。

饿汉模式

  1. 将构造方法私有化,不允许外部直接访问。

    1
    private Singleton(){}
  2. 创建 类的唯一实例, 使用private static修饰。

    1
    private static Singleton  instance=new Singleton();
  3. 提供一个用于获取实例的方法, 使用public static修饰。

    1
    2
    3
    public static Singleton getInstance(){
    return instance;
    }

懒汉模式

  1. 将构造方法私有化,不允许外边直接创建对象。

    1
    2
    3
        private Singleton2(){}
    ```
    2. 声明 类的唯一实例,使用private static修饰。

    private static Singleton2 instance;

    1
    3. 提供一个用于获取实例的方法,使用public static修饰。

    public static Singleton2 getInstance(){

    if(instance==null){
        instance=new Singleton2();
    }
    return instance;
    

    }
    `

饿汉模式与懒汉模式的区别

  • 饿汉模式

  加载类时比较慢,但运行时获取对象的速度比较快,线程安全

  • 懒汉模式

  加载类时比较快,但运行时获取对象的速度比较慢,线程不安全

-------------本文结束感谢阅读-------------