java单例模式_Java基础 | 设计模式 | 单例模式的几种实现
程序员文章站
2022-03-01 13:03:47
...
单例模式是一种常见的设计模式,即在整个系统中只拥有一个全局对象,这个对象的类只有一个实例存在,如垃圾箱、打印机的打印对象。
1. 懒汉式
public
- 单例模式的构造方法都为私有private,这能保证单例类不能通过new实例化,只能通过类中的static方法获取实例。
- 上面的懒汉式是线程不安全的,当两个线程同时调用getInstance()方法时,此时instance都为null,因此会创建两个实例。可以通过添加synchronized关键字解决。
public
2. 饿汉式
public
- 饿汉式是提前实例化的,因此是线程安全的。
- 不论使不使用,这个实例都存在内存中,可以使用内部类来进行延迟加载。
public
3. 双检锁
public
- 双检锁首先判断实例single存不存在,如果存在就直接返回实例,不存在再通过加锁去创建实例,这比懒汉式在方法上加锁效率更高。
4. 比较
- 时间/空间:懒汉式每次都要判断null相较来说更花时间,加锁synchronized也是,饿汉式在静态代码块实例化类,不论使不使用都会事先实例化,相较来说更花空间。
- 线程安全:懒汉式不是线程安全的,需加synchronized才是线程安全的,其他方法则都是线程安全的。
5. 参考
- 单例模式的几种写法(包含双检锁写法)
- 单例模式(详解,面试问题)
- 单例模式学习总结
上一篇: 操作列表
下一篇: JAVA单例模式的几种实现方法