单例,就是在内存中维护唯一对象。这样做有以下几个优点
对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中。
保持程序运行的时候该中始终只有一个实例存在内存中
代码如下:
public class Singleton {
//必须定义一个静态函数获得该单例,必须使用volatile修饰
private static volatile Singleton instance = null;
//必须防止外部调用构造函数进行实例化
private Singleton(){
}
/**
* 使用synchronized进行同步处理,并且双重判断是否为null,
*/
public static Singleton getInstance(){
if (instance==null) {
synchronized (Singleton.class) {
//这里进行是否为null判断,是因为一个线程进入该代码,如果另一个线程在等待,
//这时前一个线程创建一个实例完毕出来后,另一个线程获得锁进入该同步代码,实例已经存在,没有必要再次创建
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}