在懒汉式单例模式基础上实现线程同步:
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关键字进行同步后,则不会出现此种情况。
注意:本文归作者所有,未经作者允许,不得转载