饿汉模式是在类加载机制的初始化阶段就实例了类的初始化。本质上就是借助jvm类加载机制,保证实例的唯一性(初始化过程只会执行一次)以及线程安全,

    类加载过程:

    • 加载二进制到内存中,生成对应的Class数据结构;
    • 连接:a. 验证 b.准备(给类的静态成员变量赋默认值) c. 解析
    • 初始化:给类的静态变量赋初值

    只有在真正使用对应的类时,才会触发初始化,如(当前类是启动类即main函数所在的类、直接执行new操作、访问静态属性、访问静态方法、用反射访问类、初始化一个类的子类等)

    下面直接上代码

    1. /**
    2. * @author xzf
    3. * @create 2021-02-08 8:59
    4. */
    5. public class HungrySingleton {
    6. private static HungrySingleton instance = new HungrySingleton();
    7. private HungrySingleton(){}
    8. public static HungrySingleton getInstance(){
    9. return instance;
    10. }
    11. }