一、单例模式的概念
单例模式:创建唯一的实例并提供一个全局的访问点。
注意多线程问题,不同的类加载器可能会使得单例失效。
二、代码
(1)Synchronized同步方法
简单但是开销大,Synchronized是一个很重的操作
public class Singleton { private static Singleton unique; private Singleton() {} public static synchronized Singleton get() { if(unique == null) unique = new Singleton(); return unique; } }
(2)在类加载时实例化
public class Singleton { private static Singleton unique = new Singleton(); private Singleton() {} public static Singleton get() { return unique; } }
(3)双重检测,局部加锁
public class Singleton { private static Singleton unique; private Singleton() {} public static Singleton get() { if(unique == null) { synchronized(Singleton.class) { if(unique == null) unique = new Singleton(); } } return unique; } }