美文网首页
Android 单例使用规范

Android 单例使用规范

作者: BetterCoder | 来源:发表于2016-12-12 13:14 被阅读27次

规范

使用如下两种单例形式:

  1. 双重校验锁。
public class Singleton {
    private static volatile Singleton sInstance; // 需要volatile关键字防止指令乱序

    private Singleton() {}

    public static Singleton getInstance() {
        // 双重校验锁提高性能
        if (sInstance == null) {
            synchronized (Singleton.class) {
                if (sInstance == null) {
                    sInstance = new Singleton();
                }
            }
        }
        return sInstance;
    }
}
  1. 静态内部类。
public class Singleton {
    private Singleton() {}

    private static class SingletonHolder {
        // 虚拟机在这里会有锁
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}

制定原则

  1. 单例的错误使用会导致一些诡异问题,增大发现成本。

相关文章

网友评论

      本文标题:Android 单例使用规范

      本文链接:https://www.haomeiwen.com/subject/hpymmttx.html