Java双重锁定单例模式
时间: 2023-11-28 17:41:47 浏览: 111
Java-设计模式-单例模式-实现源码(简单实现、双重检查锁、静态内部类、枚举类)
Java双重锁定单例模式(Double-Checked Locking Singleton Pattern)是一种常用的单例模式实现方式。它的特点是在getInstance()方法中,先检查是否已经有了实例,如果没有才进行同步。这样既可以保证多线程情况下的线程安全,又可以避免每次获取实例时都进行同步,提高了效率。
具体实现方式是在getInstance()方法中,先判断实例是否已经存在,如果不存在再进行同步。在同步块内部再次判断实例是否存在,如果不存在则创建实例。这样可以保证只有第一次调用getInstance()方法时才会进行同步,避免了每次获取实例时都进行同步的开销。
需要注意的是,为了避免指令重排带来的问题,需要给实例对象添加volatile关键字,保证对象的创建顺序不会被重排。同时,也需要注意反射和反序列化可能会破坏单例模式的实现,可以通过枚举类创建绝对安全的单例模式。
阅读全文