Java单例模式
- 概述
由于单例模式只生成一个实例,减少了系统性能开销,保证内存中只存在一个实例主要追求三个方面的性能:线程安全、调用效率高、延迟加载
- 应用场景
文件系统,一个操作系统只能有一个文件系统比如点击登陆系统,只会弹出一个登录框,再点击不会出现同样的登录框
比如播放音乐,正在播放一首,点击另一首,不会同时播放
数据库连接池的设计和实现
- 实现方式
- 饿汉式
(1)实现简单、避免了同步问题、实现了线程安全
(2)在需要实例之前就完成了初始化,在系统中单例场景较多的情况下,会造成内存占用,加载速度慢
(3)由于在getInstance()之前就已经实例化了,如果需要给getInstance传入参数,将无法实现
2. 懒汉式
(1)线程不安全,在多线程条件下,多个线程可能同时检测到实例没有初始化从而分别初始化,破坏了单例约束