wordpress 大站点,东营+网站建设,网站后台慢,电商怎么做的步骤1.定义介绍
所谓单例模式#xff0c;是指在程序运行时#xff0c;整个JVM中只有一个该类的实例对象
2. 单例模式的优点
复用性高#xff0c;节省内存资源。类的加载、连接、初始化、使用都要占用虚拟机内存空间#xff0c;因此#xff0c;频繁创建对象会造成资源浪费是指在程序运行时整个JVM中只有一个该类的实例对象
2. 单例模式的优点
复用性高节省内存资源。类的加载、连接、初始化、使用都要占用虚拟机内存空间因此频繁创建对象会造成资源浪费单例模式恰好可以解决这个问题
3.单例模式分类
主要分为饿汉式和懒汉式两种
3.1 饿汉式
提前完成实例对象的创建利用了类加载、连接、初始化的过程实现由JVM保证线程安全缺点是会造成资源浪费有时候可能并不希望用不到的类对象被创建出来。
3.2 懒汉式
只有在第一次被要求返回一个实例对象时才会创建该实例对象弥补了饿汉式的缺点但自身也有缺点可能存在并发带来的线程安全问题
饿汉式有天然的线程安全优势细究其实创建实例对象的过程无非是利用了类初始化的过程类变量在连接-准备阶段被创建在初始化阶段被赋值。 同理也可以写出天然线程安全的饿汉式单例模式将对象初始化过程用static修饰即可同时为了满足懒汉式借助内部类实现
4.单例模式被破坏的几种情况
**反射**如果反射上破坏了单例模式构造器的访问权限则会打破单例模式应对方法也很简单在构造器中做一个NULL值判断即可 **反序列化**如果类实现了Serializable接口反序列化时会调用顶层父类Object的构造器创建另一个该类的对象打破单例模式应对方法在类中声明
public Object readResolve(){return INSTANCE;
}阻止反序列化时重新创建对象 **使用Unsafe类操作内存**无法应对。