今天温习了Singleton模式,仔细把2本书上的相关内容研究了一遍,现在做一下总结
1. 懒汉单例模式
懒汉单例模式是声明一个static变量,在用户第一次调用getInstance时进行初始化。示例代码如下
public class Singleton {
private static Singleton mInstance;
private Singleton() {
}
public synchronized static Singleton getInstance() {
if (mInstance == null) {
mInstance = new Singleton();
}
return mInstance;
}
}
懒汉单例模式总结
优点: 只有在使用的时候才进行实例化,在一定程度上节约资源。
缺点: 即使mInstance不为null都需要每次进行线程同步,造成不必要的同步开销。
2. DCL单例模式(Double CheckLock)
DCL单例模式是进行2次非空检查,第一次检查,如果mInstance非空,则不用进行同步,避免了不必要的同步开销。第二次检查,则是类似懒汉模式的在非空状态下才进行实例化。
DC