前言在之前的文章,我们已经讲过了单例模式的线程不安全模式,大家有兴趣的可参考以下文章:单例模式(一)—懒汉模式单例模式(二)—懒汉模式(线程安全模式)单例模式(三)—饿汉模式今天讲讲懒汉双锁模式,涉及的内容有:懒汉双锁模式实现步骤懒汉双锁模式实现代码懒汉双锁模式优化一.懒汉双锁模式实现步骤写一个private无参构造函数声明privatestatic该类对象写一个publicstatic的获取该类对象的方法,在该方法中首先对该类对象是否为空做判断,若为空,则给该类添加同步锁synchronized,在同步方法内再度判断该类对象是否为空,若为空则初始化该对象二.懒汉双锁模式实现代码下面给出懒汉双
双重校验锁实现单例:publicclassSingleton{privatevolatilestaticSingletonsingleton;privateSingleton(){}publicstaticSingletongetSingleton(){if(singleton==null){synchronized(Singleton.class){if(singleton==null){singleton=newSingleton();}}}returnsingleton;}}枚举实现单例:publicenumSingleton{INSTANCE;publicvoidwhateverMet
双重校验锁实现单例:publicclassSingleton{privatevolatilestaticSingletonsingleton;privateSingleton(){}publicstaticSingletongetSingleton(){if(singleton==null){synchronized(Singleton.class){if(singleton==null){singleton=newSingleton();}}}returnsingleton;}}枚举实现单例:publicenumSingleton{INSTANCE;publicvoidwhateverMet
工作中一个接口需要动态加载不同类型的mapper类,mapper获取实体类,返回给前端。自定义注解@Subscribe,Mapper添加@Subscribe(desc="xxxxxx"),维护不同类型与Mapper的对应关系。image.png获取所有Mapper。所有需要用的mapper实现自定义的TemplateMapper接口,通过反射获取所有该接口的实现类,(要求:接口与实现类在同一目录下)image.png获取Mapper实例。基于以上1,2,维护Map类,通过前端传递type,获取对应class,然后通过ApplicationContext.getBean(Class)返回对应ma
工作中一个接口需要动态加载不同类型的mapper类,mapper获取实体类,返回给前端。自定义注解@Subscribe,Mapper添加@Subscribe(desc="xxxxxx"),维护不同类型与Mapper的对应关系。image.png获取所有Mapper。所有需要用的mapper实现自定义的TemplateMapper接口,通过反射获取所有该接口的实现类,(要求:接口与实现类在同一目录下)image.png获取Mapper实例。基于以上1,2,维护Map类,通过前端传递type,获取对应class,然后通过ApplicationContext.getBean(Class)返回对应ma