1、单例模式的三个特点?
1)单例类只能有一个实例。
2)单例类必须自己创建自己的唯一实例。
3)单例类必须给所有其他对象提供这一实例。
2、单例模式分类
懒汉式单例、饿汉式单例
3、饿汉式单例和懒汉式单例区别
区别1:线程安全
饿汉式天生是线程安全的。
懒汉式不是线程安全的,有三种方法可以实现线程安全。
方法1)在getInstance方法上加同步;
方法2)双重检查锁定;
方法3)静态内部类;
区别2:对象创建的时机不同
饿汉式单例:类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了。
懒汉式单例:只有当调用getInstance的时候,才会去初始化这个单例。
4、单例模式的应用场景
线程池、缓存、日志对象、对话框、打印机等。
5、为什么类加载机制能保证初始化instance时只有一个实例?
Java源码使用同步(synchronized)的方式来保证。
网友评论