单例模式的标准写法、注意事项、做用及测试

最新最准确内容建议直接访问原文:单例模式java

 

主要介绍单例模式的标准写法、注意事项、做用、测试,以Java语言为例,下面代码是目前见过最好的写法:android

public class Singleton {

    private static volatile Singleton instance = null;

    // private constructor suppresses
    private Singleton(){
    }

    public static Singleton getInstance() {
        // if already inited, no need to get lock everytime
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }

        return instance;
    }
}

一、须要注意的点算法

其中须要注意的点主要有三点
(1) 私有化构造函数
(2) 定义静态的Singleton instance对象和getInstance()方法
(3) getInstance()方法中须要使用同步锁synchronized (Singleton.class)防止多线程同时进入形成instance被屡次实例化
能够看到上面在synchronized (Singleton.class)外又添加了一层if,这是为了在instance已经实例化后下次进入没必要执行synchronized (Singleton.class)获取对象锁,从而提升性能。缓存

Ps: 也有实现使用的是private static Object    obj      = new Object();加上synchronized(obj),实际没有必要多建立一个对象。synchronized(X.class) is used to make sure that there is exactly one Thread in the block.性能优化

 

二、单例的做用
单例主要有两个做用
(1) 保持程序运行过程当中该类始终只存在一个示例
(2) 对于new性能消耗较大的类,只实例化一次能够提升性能网络

 

三、单例模式测试多线程

单例模式能够使用多线程并发进行测试,代码以下:并发

 

你可能还感兴趣:ide

Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)

Android ImageCache图片缓存

Android性能优化专题

相关文章
相关标签/搜索