Singleton模式(创建型)

单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。


Singleton模式(创建型)_第1张图片
单例模式结构图

它拥有一个私有的构造函数,确保用户无法通过new直接实例化对象,除此之外,该模式中包含一个静态成员变量和一个静态公有方法instance(),instance()方法负责检验并实例化自己,并存储在静态成员变量中,以确保只有一个实例被创建。

一、线程安全

为了线程安全,需要实现同步操作,但是由于lock是确保当一个线程位于代码的临界区时,另一个线程不能进入临界区(同步操作)。如果其他线程试图进入锁定的代码,则它将一直等待,直到该对象被释放。从而确保在多线程下不会创建多个对象实例了。只是这种实现方式要进行同步操作,这将是影响系统性能的瓶颈和增加了额外的开销。

因此为了降低操作的次数,其实我们只需在同步操作之前,添加判断该实例是否为null就可以降低通过操作的次数了,这样是经典的Double-Checked Locking方法。

二、静态初始化

不使用线程同步,达到线程安全的要求,可以使用静态成员初始化方法。

你可能感兴趣的:(Singleton模式(创建型))