手写一个线程安全的单例模式

liyan 7月前 ⋅ 69 阅读

在懒汉式单例模式基础上实现线程同步:

public class Singleton {     private static Singleton instance = null;     // 私有构造方法,保证外界无法直接实例化。     private Singleton() {}     // 通过公有的静态方法获取对象实例     synchronized public static Singleton getInstace() {         if (instance == null) {             instance = new Singleton();         }         return instance;     } }

上述代码对静态方法 getInstance()进行同步,以确保多线程环境下只创建一个实例。如果getInstance()方法未被同步,并且线程A和线程B同时调用此方法,则执行if (instance == null)语句时都为真,那么线程A和线程B都会创建一个对象,在内存中就会出现两个对象,这样就违反了单例模式。而使用synchronized关键字进行同步后,则不会出现此种情况。


全部评论: 0

    我有话说: