zoukankan      html  css  js  c++  java
  • 设计模式:单例模式

    原文:https://www.cnblogs.com/android-blogs/p/5530239.html

    优点:

    • 对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中。
    • 保持程序运行的时候该中始终只有一个实例存在内存中
    public class Singleton {
        private static volatile Singleton instance = null;
    
        private Singleton(){
        }
     
        public static Singleton getInstance() {
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }

    要保证单例,需要做一下几步

    • 必须防止外部可以调用构造函数进行实例化,因此构造函数必须私有化。
    • 必须定义一个静态函数获得该单例
    • 单例使用volatile修饰
    • 使用synchronized 进行同步处理,并且双重判断是否为null,我们看到synchronized (Singleton.class)里面又进行了是否为null的判断,这是因为一个线程进入了该代码,如果另一个线程在等待,这时候前一个线程创建了一个实例出来完毕后,另一个线程获得锁进入该同步代码,实例已经存在,没必要再次创建,因此这个判断是否是null还是必须的。
  • 相关阅读:
    04_Javascript初步第二天(上)
    用python实现省市县多级嵌套下拉列表
    爬虫之 BeautifulSoup与Xpath
    爬虫之 selenium模块
    爬虫请求库 requests
    抽屉网自动点赞 评论
    爬取京东商品信息
    爬取豆瓣电影top250
    爬虫基本原理
    Django auth认证
  • 原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/11752005.html
Copyright © 2011-2022 走看看