单例模式
1.手写单例模式
2.线程安全的单例模式
什么是单例
单例类在整个程序中只能有一个实例,这个类负责创建自己的对象,并确保只有一个对象被创建。
代码实现要点
私有构造器
持有该类的属性
对外提供获取实力的静态方法
饿汉式:
线程安全,反射不安全,反序列化不安全
另外,饿汉式对反射机制是不安全的,利用反射去获取该单例对象,
是会拿到不同的对线
饿汉式对反序列化也是不安全的,所以可以在类中重写readResolve()方法来解决反序列化的不安全问题
懒汉式:
实现方式1:在静态方法里创建该类对象
在这种实现方式里,是线程不安全的,在多线程环境里可能会创建多个对象
实现方式2:懒汉式线程安全的实现方法,加上synchronized关键字
另外,可以在同步代码块外部判断对象是否已经创建,可以增加效率
实现方式3:用静态内部类的形式创建对象