单例模式保证了系统中该类只存在一个对象,当我们实例化一个单例类的对象时,必须要记住相应的去使用获取对象的方法,而不是new。对于一些频繁创建和销毁的对象或者消耗资源比较多的对象,比如工具类、频繁访问数据库等。
单例模式一共有8种:
- 饿汉式(静态常量)适合在单线程情况下使用
- 饿汉式(静态代码块)适合在单线程情况下使用
- 懒汉式(线程不安全)
- 懒汉式(线程安全 同步方法)
- 懒汉式(线程不安全 同步代码块)
- 双重检查
- 静态内部类、
- 枚举类
后三种推荐使用在开发中,并且多线程的情况下
在JDK源码中 ,java.lang.Runtime使用了单例模式的饿汉式
源码如下: