您的位置:首页 > 移动开发 > Android开发

Android设计模式 单例模式(Double CheckLock模式)

2016-03-31 17:17 288 查看
Double CheckLock简称DCL模式,
优点是既能够保证用到的时候才初始化单例,又能够保证现成安全,且单例对象初始化后调用getInstance不进行同步锁。
代码如下


package demo;

public class Singleton {
private static Singleton mInstance = null;

private Singleton() {
}
public static synchronized Singleton getInstance() {
if (mInstance == null) {
synchronized (Singleton.class) {
if (mInstance == null) {
mInstance = new Singleton();
}
}
}
return mInstance;
}
}


getInstance方法中进行了2次判断null,第一次判断是避免不必要的同步,第二次是在null的情况下创先实例。

DCL优点:资源利用率高,第一次执行getInstance才会被实例化,效率高。
缺点:第一次加载时反映稍慢,也由于内存模型的原因偶尔会失败。在高并发的环境下也有一定的缺陷,虽然发生率很小。
DCL是使用最多的单例实现方式,它能够在需要时才实例化,并且能够在大多数时保证对象唯一性。
注:不低于JDK1.6版本以下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式 Android