好的网站建设价格,网站使用前流程,医疗网站建设基本流程图,网络服务提供者知道网络用户利用其网络服务侵害他人文章目录 1、概念2、实现方式1、懒汉式2、饿汉式3、双检锁/双重校验锁4、登记式/静态内部类5、枚举6、容器实现单例 1、概念
单例模式#xff08;Singleton Pattern#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式#xff0c;它提供了一种创… 文章目录 1、概念2、实现方式1、懒汉式2、饿汉式3、双检锁/双重校验锁4、登记式/静态内部类5、枚举6、容器实现单例 1、概念
单例模式Singleton Pattern是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。
意图保证一个类仅有一个实例并提供一个访问它的全局访问点。
主要解决一个全局使用的类频繁地创建与销毁。
何时使用当您想控制实例数目节省系统资源的时候。
如何解决判断系统是否已经有这个单例如果有则返回如果没有则创建。
关键代码构造函数是私有的。
2、实现方式
1、懒汉式
是否 Lazy 初始化是
是否多线程安全是
实现难度易
描述这种方式具备很好的 lazy loading能够在多线程中很好的工作但是效率很低99% 情况下不需要同步。 优点第一次调用才初始化避免内存浪费。 缺点必须加锁 synchronized 才能保证单例但加锁会影响效率。 2、饿汉式
是否 Lazy 初始化否
是否多线程安全是
实现难度易
描述这种方式比较常用但容易产生垃圾对象。 优点没有加锁执行效率会提高。 缺点类加载时就初始化浪费内存。 3、双检锁/双重校验锁
是否 Lazy 初始化是
是否多线程安全是
实现难度较复杂
描述这种方式采用双锁机制安全且在多线程情况下能保持高性能。
4、登记式/静态内部类
是否 Lazy 初始化是
是否多线程安全是
实现难度一般 5、枚举
是否 Lazy 初始化是
是否多线程安全是
实现难度易
描述这种实现方式还没有被广泛采用但这是实现单例模式的最佳方法。它更简洁自动支持序列化机制绝对防止多次实例化。 6、容器实现单例
是否 Lazy 初始化否
是否多线程安全是
实现难度一般