单例模式

作者: 未见哥哥 | 来源:发表于2017-06-15 11:18 被阅读40次

    类单例的实现方式

    类对象不允许被多次创建,也就是在整个内存中只允许一个实例出现。

    优雅的实现方式

    代码如下,主要是以下的3个步骤即可,下面的注释写的很明白

    public class ImageLoader {
        private static ImageLoader mInstance;
        private ImageLoader(){}
        public static ImageLoader getInstance(int threadCount, Type type) {
            //①初次调用时,mInstance为null,这时候可能多个进程并发进来。这里判空时的原因是减少每次对锁的判断
            if (mInstance == null) {
                //②加锁,保证只有一个线程能进来,这时候可能还有多个其他的线程等待着
                synchronized (ImageLoader.class) {
                    //③第一个进来的mInstance为null,然后实例化对象。之后排队进来的判断mInstance不为null,那么就不会再重新初始化了
                    if (mInstance == null) {
                        mInstance = new ImageLoader(threadCount, type);
                    }
                }
            }
        return mInstance;
        }
    }
    
    • 注意一点:有些人会在getInstance方法中加上synchronize关键字,这种是比较粗暴的实现方式,并且在并发量很大的情况下,每次调用getInstance方法都要去判断一次锁,因此这样会减低效率。

    相关文章

      网友评论

        本文标题:单例模式

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