单例模式:
目的:
1.有且仅创建一次对象的设计模式
2.多次使用同一对象,且作用相同
类型:
1.恶汉式:类加载时创建
2.懒汉式:对象第一次被使用时创建
介绍:
懒汉式:
使用时优先判断对象是否存在,不存在创建,存在直接返回
问题:
1.多线程访问存在线程安全:
使用synchronized修饰方法
使用synchronized直接修饰单例对象(性能问题)
使用synchronized修饰判断为空后的单例对象
2.指令重排问题
初始化对象和内存分配顺序颠倒报npe
使用volatile修饰声明的单例对象的属性
破坏单例:
1.反射
2.序列化/反序列化