美文网首页
单例模式 -- 饿汉式

单例模式 -- 饿汉式

作者: wbpailxt | 来源:发表于2019-11-24 18:21 被阅读0次

    在类加载的时候就完成实例化

    package com.geely.design.pattern.creational.singleton;
    
    /**
     * Created by geely
     */
    public class HungrySingleton {
        // 准备阶段会被分配内存,但不会被赋予null值,在初始化阶段被初始化。
        private final static HungrySingleton hungrySingleton;
    
        static{
            hungrySingleton = new HungrySingleton();
        }
        
        public static HungrySingleton getInstance(){
            return hungrySingleton;
        }
    
        private HungrySingleton(){
            if(hungrySingleton != null){
                throw new RuntimeException("单例构造器禁止反射调用");
            }
        }
    }
    

    这个就是非常简单的饿汉式单例模式,优点就是写法简单,类加载的时候就完成了初始化,避免了多线程同步问题(因为有Class对象的初始化锁)。缺点是在类加载的时候就完成初始化,没有延迟加载的效果。如果这个类系统从始至终都没有用过还会造成内存的浪费。

    相关文章

      网友评论

          本文标题:单例模式 -- 饿汉式

          本文链接:https://www.haomeiwen.com/subject/wajzictx.html