Java实现单例模式的五种方式总结
更新时间:2025年01月06日 09:22:39 作者:今天不coding
这篇文章主要介绍了如何实现一个单例模式,包括构造器私有化、提供静态私有变量和公共获取实例接口,文中通过代码介绍的非常详细,需要的朋友可以参考下
如何实现一个单例
1、构造器需要私有化
2、提供一个私有的静态变量
3、暴露一个公共的获取单例对象的接口
需要考虑的两个问题
1、是否支持懒加载
2、是否线程安全
1、饿汉式
public class EagerSingleton { private static final EagerSingleton INSTANCE = new EagerSingleton(); private EagerSingleton(){} public EagerSingleton getInstance(){ return INSTANCE; } }
不支持懒加载
线程安全
2、懒汉式
public class LazySingleton { private static LazySingleton INSTANCE; private LazySingleton() { } public static LazySingleton getInstance() { if (INSTANCE == null) { INSTANCE = new LazySingleton(); } return INSTANCE; } }
支持懒加载
线程不安全
public class LazySingleton { private static LazySingleton INSTANCE; private LazySingleton() { } public static synchronized LazySingleton getInstance() { if (INSTANCE == null) { INSTANCE = new LazySingleton(); } return INSTANCE; } }
支持懒加载
线程安全
3、双重检查锁
public class DoubleCheckSingleton { private static DoubleCheckSingleton INSTANCE; private DoubleCheckSingleton() { } public DoubleCheckSingleton getInstance() { if (INSTANCE == null) { synchronized (DoubleCheckSingleton.class) { if (INSTANCE == null) { INSTANCE = new DoubleCheckSingleton(); } } } return INSTANCE; } }
支持懒加载
线程安全
4、静态内部类
public class InnerSingleton { private InnerSingleton() { } public static InnerSingleton getInstance() { return Singleton.INSTANCE; } private static class Singleton { private static final InnerSingleton INSTANCE = new InnerSingleton(); } }
支持懒加载
线程安全
5、枚举
public enum EnumSingleton { INSTANCE; }
总结
到此这篇关于Java实现单例模式的五种方式的文章就介绍到这了,更多相关Java实现单例模式方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot和Redis实现Token权限认证的实例讲解
这篇文章主要介绍了SpringBoot和Redis实现Token权限认证的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02SpringBoot集成Redisson实现消息队列的示例代码
本文介绍了如何在SpringBoot中通过集成Redisson来实现消息队列的功能,包括RedisQueue、RedisQueueInit、RedisQueueListener、RedisQueueService等相关组件的实现和测试,感兴趣的可以了解一下2024-10-10springBoot的事件机制GenericApplicationListener用法解析
这篇文章主要介绍了springBoot的事件机制GenericApplicationListener用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值的相关资料2019-09-09
最新评论